我试图解决一个preg_replace神秘莫测没有成功,也许你可以帮助我。我有这样的句子:preg_replace有什么问题?
$string = preg_replace("/\[_BEGIN_\](.*?)\[_END_\]/", '', $string);
它删除任何[_BEGIN_]
和[_END_]
元标记之间的所有内容。例如适用于:
"The [_BEGIN_] quick brown [_END_]fox jumps over the lazy dog"
给出的结果是:
"The fox jumps over the lazy dog"
的问题是它的工作原理在我的机器(Ubuntu的9.10,PHP v5.2.10),但在我的生产现场(Gentoo的1.6。 14,PHP v5.2.5-pl1-gentoo)失败(preg_replace返回相同的输入字符串)。
使用正则表达式有问题吗?我该如何解决这个问题?如何调试它?任何线索都会受到欢迎。谢谢。
你的正则表达式似乎罚款的所有口味都支持
尝试将其改变了这一点。我不知道PHP,但我听说单引号和双引号之间存在差异。围绕正则表达式使用单引号会改变什么? –
@TimPietzcker它可以在“普通”系统上完美工作:http://codepad.org/1u5HEX9R – Marcus
@Ivan试着制作一个简单的'preg_replace'测试文件,看看它是否有效。你是否启用了错误和警告? – Marcus