正确代码如下:
$res=array();
$str="你好aaaaa啊"
preg_match_all("/[\x{4e00}-\x{9fa5}]+/u",$str,$res);
var_dump($res);
//输出
//array(1) { [0]=> array(2) { [0]=> string(6) "你好" [1]=> string(3) "啊" } }
注意点:
常规正则是: [\u4e00-\u9fa5]
PHP正则使用这种类型会报错: PCRE does not support \L, \l, \N, \P
所以PHP支持的中文正则是: [\x{4e00}-\x{9fa5}]
但是只写这种内容还是会报错: preg_replace(): Compilation failed: character value in \x{} or \o{} is too large
所以就需要在正则字符串后缀加上u,例如上面正确例子的/[x{4e00}-x{9fa5}]+/ u
评论