Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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_*一起工作吗?_Php_Regex_Preg Replace - Fatal编程技术网

Php 为什么';这个正则表达式不能与preg_*一起工作吗?

Php 为什么';这个正则表达式不能与preg_*一起工作吗?,php,regex,preg-replace,Php,Regex,Preg Replace,我有一个正则表达式:/()*$/gi 这样做的目的是匹配可能格式错误的字符串末尾的未知数量的标记。字符串将不包含除break标记以外的HTML 这在Grant Skinner的测试工具()中运行良好,但在PHP中使用preg\u replace时失败 下面返回一个空字符串,但我希望原始字符串结尾没有任何标记: $string = 'Here is some text<br><br>And here is some more<br><br>and t

我有一个正则表达式:
/()*$/gi

这样做的目的是匹配可能格式错误的字符串末尾的未知数量的

标记。字符串将不包含除break标记以外的HTML

这在Grant Skinner的测试工具()中运行良好,但在PHP中使用
preg\u replace
时失败

下面返回一个空字符串,但我希望原始字符串结尾没有任何

标记:

$string = 'Here is some text<br><br>And here is some more<br><br>and this is followed by a load of unnecessary breaks<Br><br/><br   /><br /><br><br    ><br><br>';
echo preg_replace('/(<br\s*/{0,1}>)*$/gi','',$string);
$string='这里有一些文本

还有更多的

,然后是大量不必要的中断







; echo preg_replace('/()*$/gi','.$string);

我做错了什么?

你需要避开正斜杠;它会提前终止正则表达式,然后由于正则表达式选项区域中出现意外字符而导致错误。除此之外,删除PHP中不存在的
g
修饰符:

echo preg_replace('/(<br\s*\/?>)*$/i','',$string);

旁注:您可以而且应该使用
而不是
{0,1}

您需要转义正斜杠;它会提前终止正则表达式,然后由于正则表达式选项区域中出现意外字符而导致错误。除此之外,删除PHP中不存在的
g
修饰符:

echo preg_replace('/(<br\s*\/?>)*$/i','',$string);

旁注:您可以而且应该使用
而不是
{0,1}

我已经用转义斜杠尝试过了,但是没有帮助-
/()*$/gi
。我使用了{0,1}表单,因为如果包含此正则表达式的行被注释掉,
?>
部分将被解释为PHP.Answer更新的结尾。删除
g
修改器。然后它就起作用了。您应该真正启用
错误报告(E_ALL)
在开发系统上显示_errors=on
(php.ini)。然后,你会得到有用的警告,立即告诉你出了什么问题。你是对的。我不知道
g
是不允许的。非常感谢。我用一个转义斜杠试过了,但是没有用-
/()*$/gi
。我使用了{0,1}表单,因为如果包含此正则表达式的行被注释掉,
?>
部分将被解释为PHP.Answer更新的结尾。删除
g
修改器。然后它就起作用了。您应该真正启用
错误报告(E_ALL)
在开发系统上显示_errors=on
(php.ini)。然后,你会得到有用的警告,立即告诉你出了什么问题。你是对的。我不知道
g
是不允许的。谢谢大家!@韦巴托:他为什么要这么做?使用正则表达式测试仪时,请使用与应用程序使用相同引擎(最好是在相同的语言环境中)的测试仪。@webarto:他为什么要这样做?使用正则表达式测试仪时,请使用与应用程序使用相同引擎(最好是在相同的语言环境中)的测试仪。