15.5.2 检查中文字符的正则表达式
中文在ASCII码中有一定的范围,这个范围是从0xa1到0xff,所以可以用正则表达式0xa1-0xff来表示中文。代码15-15是检查匹配完全中文字符串的示例程序。
代码15-15 匹配中文字符串15-15.php
01 <?php
02 $str_arr=array(
03 "IAMEVERYSORRY",
04 "快乐编程,快乐生活",
05 "PHP编程",
06 "1997年香港回归",
07 "英语学习ABC",
08 "123456789"
09 );//定义字符串数组
10
11 $patt_ch=chr(0xa1)."-".chr(0xff);//匹配中文字符的ASCII范围
12
13 foreach($str_arr as$str)
14 {
15 echo"字符串'$str'是";
16 if(preg_match("/^[$patt_ch]+$/",$str))//注意在正则表达式的前后使用界定符"//"
17 {
18 echo"完全中文";
19 echo"<br>";
20 echo"<br>";
21 }
22 else
23 {
24 echo"非完全中文";
25 echo"<br>";
26 echo"<br>";
27 }
28 }
29 ?>
【代码解析】这段程序中使用了兼容PERL正则表达式函数preg_match()。代码第11行,使用了函数chr(),该函数返回相对应于ASCII所指定的单个字符。注意第16行在函数preg_match()中所使用匹配中文的模式,在这个正则表达式中加入^和$,以保证匹配完全的中文(即纯中文字符串)。这段代码的执行结果如图15-17所示。
读者可以试着将正则表达式前后的^和$去掉,看看执行结果有什么不同。
共有条评论 网友评论