PHP正则表达式匹配所有中文

《PHP正则表达式匹配所有中文》有这样的需求,需要将一篇文档中的所有的中文匹配出来,需要统计中文的个数。将这个问题缩小,设计一个这样的简单的字符串。对应的程序参考PHP代码。需要掌握的有几点
1. 中文在php中的表示,范围介于\x4e00 - \x9fa5,每个汉字由一个或两个这个组成。可以通过将一个汉字字符串用json_encode之后来观察对应的结果来验证。
2. 正则表达式后面的修饰符u的含义是,因为我们是根据中文的unicode来进行匹配的,所以要以unicode的方式来解析字符串才行。
3. U表示停止默认的贪婪匹配行为,所以加了这个修饰符会输出一个一个的汉字。
4. ()内的部分将作为匹配部分,放入$out变量中。
5. |是界定符,一般来说界定符用\,但是这个并不是一成不变的,如果你的正则中大量需要\,那么就可以选用|


PHP代码

<?php

$str = "php编程,我在马路边,pick up one cent.尾巴在哪里"; 
preg_match_all("/([\x{4e00}-\x{9fa5}]+)/u" , $str , $out);
var_dump($out);

preg_match_all("/([\x{4e00}-\x{9fa5}]+)/uU" , $str , $out);
var_dump($out);

?>

点赞

Leave a Reply

Your email address will not be published.