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 (日文)
更多内容参考