PHP:调用preg_replace中的函数

PHP:调用preg_replace中的函数,php,function,preg-replace,Php,Function,Preg Replace,下面的代码负责dle脚本中的bbcode标记。“\1”是我想用函数调用的链接,但我得到的是纯文本 $txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=\\1]', $txt ); 我所尝试的: $txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!-

下面的代码负责dle脚本中的bbcode标记。“\1”是我想用函数调用的链接,但我得到的是纯文本

        $txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=\\1]', $txt );
我所尝试的:

$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=videoD(\\1)]', $txt );


$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=videoD(1)]', $txt );

$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=\\videoD(1)]', $txt );
$txt=preg\u replace(“#(.+?)#is”、“[video=videoD(\\1)]”、$txt);
$txt=preg_replace(“#(.+?)#is”、“[video=videoD(1)]”、$txt);
$txt=preg_replace(“#(.+?)#is“,”[video=\\videoD(1)],$txt);
$txt=preg_replace_回调('#(.+?)#is',函数($matches){
返回“[video=videoD({$matches[1]})]”;
},$txt);

使用
e
修饰符,或使用@cbuckley-preg\u replace\u回调,是。但是应该避免使用
e
修饰符。@Spudley完全同意;我甚至不知道我为什么建议;-)我正在获取:[video=videoD(link)]@Crazy\u Bash的输出,我正在使用第一个捕获组,如您的示例中所示。如果需要第二个,请使用$matches[2]。或者在回调中使用var_dump($matches),查看它的外观,并选择您需要的。
$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=videoD(\\1)]', $txt );


$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=videoD(1)]', $txt );

$txt = preg_replace( "#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is", '[video=\\videoD(1)]', $txt );
$txt = preg_replace_callback('#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is', function($matches){
    return "[video=videoD({$matches[1]})]";
}, $txt);