我正在尝试解决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返回相同的输入字符串)。
使用正则表达式有什么问题吗?我该如何解决这个问题?怎么调试呢?任何线索都将受到欢迎。感谢。
答案 0 :(得分:1)
我没有在转义序列列表中的任何位置看到\C
。不应该是(.*?)
而不是(\C*?)
吗?
答案 1 :(得分:0)
\C
与:
[^-._:A-Za-z0-9]
尝试将其更改为此,因为并非所有口味都支持\C