PHP匹配中文详解

php中utf-8编码下用正则表达式匹配汉字的最终正确表达式:/^[\x{4e00}-\x{9fa5}]+$/u

1 $str = "php编程";
2 if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {
3   print("该字符串全部是中文");
4 } else {
5   print("该字符串不全部是中文");
6 }
 1 /**
 2 获取字符中出现的所有中文字符
 3 */
 4 $string = "php编程";
 5 preg_match_all("/[\x{4e00}-\x{9fa5}]/iu", $string, $matches);
 6 var_dump($matches);
 7 //output:
 8 ---------- PHP ----------
 9 array(1) {
10   [0]=>
11   array(2) {
12     [0]=>
13     string(3) "编"
14     [1]=>
15     string(3) "程"
16   }
17 }

模式修正符: u  (PCRE_UTF8)
此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。
本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。

不同字符集下的编码范围

双字节字符编码范围

1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk

2. UTF-8 (Unicode)

u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)

更多内容参考

http://www.189works.com/portal.php?mod=view&aid=48512

http://www.111cn.net/phper/31/42203.htm

原文地址:https://www.cnblogs.com/phpfans/p/2540070.html