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:他为什么要这样做?使用正则表达式测试仪时,请使用与应用程序使用相同引擎(最好是在相同的语言环境中)的测试仪。