我正在使用preg_replace_callback来解析我的[quote id=123][/quote]公告板代码标签。 使用正则表达式参数传递引号 ID 的正确方法是什么?
$str = '[quote id=123]This is a quote tag[/quote]';
$str = preg_replace_callback("^[quote id=([0-9]+)](.*?)[/quote]^", _parse_quote("123", "message"), $str);
function _parse_quote($message_id, $original_message){
$str = '<blockquote>'.$original_message.'</blockquote>';
return $str;
}
正则表达式应该是固定的。
-
[
和]
应该被转义以从字面上匹配它们。([
,]
正则表达式中具有特殊含义)。
代码正在调用_parse_quote
,而不是将函数传递给preg_replace_callback
。只需将函数名称作为字符串传递即可。
您可以通过索引访问捕获的组。($matches[2]
获得第二个捕获组)
$str = '[quote id=123]This is a quote tag[/quote]';
$str = preg_replace_callback("^[quote id=([0-9]+)](.*?)[/quote]^", "_parse_quote", $str);
echo $str;
function _parse_quote($matches) {
$str = '<blockquote>' . $matches[2] . '</blockquote>';
return $str;
}
输出:
<blockquote>This is a quote tag</blockquote>