Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in xxx

当我们辛辛苦苦的在网上找到匹配汉字的正则表达式拿来用时,才发现不能用,如下面代码:
<?php
echo preg_replace("#[^\u4e00-\u9fa5]#", "", '爱E族:aiezu.com');
代码抛出如下警告信息:
PHP Warning:  preg_replace(): Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in /tmp/aiezu.com.php on line 2
 
解决办法:
  原来上面代码的"\u4e00-\u9fa5"是javascript中用来匹配汉字的,在PHP中应该改成"\x"开头,并使用大括号括起来:"\x{4e00}-\x{9fa5}",并在正则表达式上使用"u"模式(UTF8模式),详见下面代码:
<?php
echo preg_replace("#[^\x{4e00}-\x{9fa5}]#u", "", '爱E族:aiezu.com');
//输出结果:爱族

0 个评论

要回复文章请先登录注册