一聚教程网:一个值得你收藏的教程网站

最新下载

php 正则表达式匹配中文规则

时间:2014-07-24 00:00:00 编辑:简简单单 来源:转载

utf-8环 境下中文的匹配

\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

或许你也需要匹配双字节字符,中文也是双字节的字符

匹配双字节字符(包括汉字在内):[^\x00-\xff]

注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)


在ANSI(gb2312)环 境下

匹配全部的gb2312编 码表的字符:/[".chr(0xb0)."-".chr(0xf7)."]+/
单纯匹配汉字而不匹配全角标点:/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])/

该表达式能匹配一个中文字符。

匹配全角标点而不匹配汉字:/([".chr(0xa1)."-".chr(0xa3)."][".chr(0xa1)."-".chr(0xff)."])/

例子

 代码如下

1、使用preg_match函数匹配汉字

$str='asd我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]#u'; 
preg_match($key,$str,$res); 
print_r($res) ; 
?> 
结果: 
Array([0]=>我)
2、使用preg_match函数匹配汉字(连续1个以上)

$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]{1,}#u'; 
preg_match($key,$str,$res); 
print_r($res) ; 
?> 
结果 
Array([0]=>我们)
3、改善1,使用preg_match_all函数匹配

$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]#u'; 
preg_match_all($key,$str,$res); 
print_r($res) ; 
?> 
结果 
Array([0]=>Array([0]=>我[1]=>们))
4、改善2,使用preg_match_all函数匹配汉字(连续1个以上)

$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]{1,}#u'; 
preg_match_all($key,$str,$res); 
print_r($res) ; 
 
?> 
结果 
Array([0]=>Array([0]=>我们))

由结果可看出,使用[\x4e00-\x9fa5]这个正则表达式可以匹配到中文。
preg_match或者preg_match_all的不同的地方就是,前者匹配一次就完了(无论是否匹配成功),而后者,会从待匹配的字符串的开头到结尾匹配一遍。

文章评论

热门栏目