如何在PHP中将regex参数传递给preg replace回调?

如何在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

我正在使用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 _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>