PHP:在preg_replace中调用函数

时间:2012-10-20 14:12:02

标签: php function preg-replace

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

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

我的功能

function videoD ($str) {
        if (strpos($str,'http://') !== false) {
                $vid = uppod_encode($str);
                echo (uppod_encode($str));

        } else {
                $vid = uppod_decode($str);
                echo (uppod_encode($vid));
        }
}

我尝试了什么:

$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 );

1 个答案:

答案 0 :(得分:2)

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