Php preg_replace_回调模式不包含某些子字符串
目前,我正在使用以下代码使用自定义函数Php preg_replace_回调模式不包含某些子字符串,php,preg-replace-callback,Php,Preg Replace Callback,目前,我正在使用以下代码使用自定义函数parse_table修改{124;和{124;}之间的内容 $output = preg_replace_callback("({\|(.*?)\|})is", function($m) {return parse_table($m[1]);}, $input); 现在我想修改它,使模式可以排除某个子字符串,例如abcde。可以做些什么来实现这一目标 非常感谢。您可以将其放入您的正则表达式中: "({\|(?!abcde)(.*?)\|})is" 然而
parse_table
修改{124;
和{124;}
之间的内容
$output = preg_replace_callback("({\|(.*?)\|})is", function($m) {return parse_table($m[1]);}, $input);
现在我想修改它,使模式可以排除某个子字符串,例如abcde
。可以做些什么来实现这一目标
非常感谢。您可以将其放入您的正则表达式中:
"({\|(?!abcde)(.*?)\|})is"
然而,这将变得非常难以阅读,非常快。相反,请使用回调函数:
function($m) {
if( $m[1] == "abcde") return $m[0];
return parse_table($m[1]);
}
我对正则表达式非常熟悉。您在回调中使用它的选项非常出色。只有一件事是您应该将条件部分更改为'if(strpos($m[1],'abcde')!==false)。非常感谢你。