【发布时间】:2013-01-19 07:40:00
【问题描述】:
我正在使用一个包含带有“\uXXXX”的表达式的正则表达式数据库,这当然会破坏 PHP PCRE。
那么,两个部分的问题,有没有办法告诉 PCRE 接受这些序列?
我解决了这个问题,幸运的是这只是一个序列,通过这样做:
$regx = str_ireplace('\u00a7', '\xa7', $regx);
但是当我尝试这样做时:
$regx = preg_replace("/\\u(\w+)/i", "\x$1", $regx);
我还在 -
警告:preg_replace() [function.preg-replace]:编译失败:PCRE 不支持偏移量 1 处的 \L、\l、\N{name}、\U 或 \u
它需要双重转义\u => \\\\u,而不仅仅是\\u,为什么/有更好的方法?注意:我实际上只需要做同样的事情,更重要的是,才能在这篇文章中输入正确的字符串。
更新:在我们的服务器上运行 5.3.3
【问题讨论】:
-
您可以在正则表达式之后添加
u修饰符(即使用您的i修饰符)以指定表达式为UTF-8 格式。见php.net/manual/en/reference.pcre.pattern.modifiers.php -
我确实尝试过,但仍然收到错误。 'u' 修饰符允许我在正则表达式模式中使用 § 而不是序列。您在下面发布的内容似乎是错误仍然发生的原因。
标签: php unicode pcre unicode-escapes