preg_replace_callback模式不包含某些子字符串

时间:2014-02-14 14:06:04

标签: php preg-replace-callback

目前,我使用以下代码使用自定义函数{|修改|}parse_table之间的内容

$output = preg_replace_callback("({\|(.*?)\|})is", function($m) {return parse_table($m[1]);}, $input);

现在我想修改它,使模式可以排除某个子字符串,例如abcde。可以做些什么来实现这个目标?

非常感谢。

1 个答案:

答案 0 :(得分:0)

你可以把它放在你的正则表达式中:

"({\|(?!abcde)(.*?)\|})is"

然而,这将非常难以阅读,非常快。相反,请使用回调:

function($m) {
    if( $m[1] == "abcde") return $m[0];
    return parse_table($m[1]);
}