如何在PHP中将regex参数传递给preg replace回调?
我正在使用preg_replace_回调解析我的[quote id=123][/quote]公告板代码标签。使用正则表达式参数传递报价id的正确方法是什么如何在PHP中将regex参数传递给preg replace回调?,php,regex,parameters,preg-replace-callback,Php,Regex,Parameters,Preg Replace Callback,我正在使用preg_replace_回调解析我的[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 _pa
$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;
}
$str='[quote id=123]这是一个quote标签[/quote];
$str=preg\u replace\u回调(“^[quote id=([0-9]+)](.*?][quote]^,”,解析(“123”,“消息”),$str);
函数_parse_quote($message_id,$original_message){
$str='.$original_message';
返回$str;
}
正则表达式应该是固定的
和[
应进行转义,以逐字匹配。(]
,[
在正则表达式中有特殊含义)]
\u parse\u quote
,而不是将函数传递给preg\u replace\u回调
。只需将函数名作为字符串传递
您可以通过索引访问捕获的组。($matches[2]
获取第二个捕获的组)
$str='[quote id=123]这是一个quote标签[/quote];
$str=preg\u replace\u回调(“^\[quote id=([0-9]+)\]”(.*?\[/quote\]^,“\u parse\u quote”,$str);
echo$str;
函数_parse_quote($matches){
$str='.$matches[2].';
返回$str;
}
输出:
<blockquote>This is a quote tag</blockquote>
这是一个报价标签
<blockquote>This is a quote tag</blockquote>