Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace_回调模式不包含某些子字符串_Php_Preg Replace Callback - Fatal编程技术网

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)。非常感谢你。