本文章總結了php中利用正則表達式來匹配中文的一些實例函數,有需要的朋友可參考參考。
我們先要明白
中文雙字節字符編碼范圍
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 (日文)
獲取指定的中文與字符
例1
輸出
Array
(
[0] => 中
)
例2
代碼如下 復制代碼<?php
$str = '這裡是中文 this is English';
//把中文變成紅色
echo preg_replace("/([x80-xff].)/","<font color=red>1</font>",$str);
//把非中文變成紅色
echo preg_replace("/([x20-x7f])/","<font color=red>1</font>",$str);
?>
簽裡面有中文、英文、數字等混排,則需要對漢字進行特殊處理,由於PCRE不支持U P L之類的perl字符串處理轉義,使用16進制或者Unicode進行處理,范例如下:
代碼如下 復制代碼
$str = "之二寬闊的甘家口東#標簽1#標簽2 #標簽3。#標簽4,都發$1234 ¥xc,cvm , ¥12,dflksjf如何#標簽5.x #tag6.cvxcv“";
preg_match_all('/#([a-zA-Z0-9x7f-xff]+)/', $str, $mat);
print_r($mat);
preg_match("/[x{00a5}x{ffe5}](d+)/u", $str, $mat);
print_r($mat);
最後我明白了php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[x{4e00}-x{9fa5}]+$/u
$str = "php編程";
if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) {
print("該字符串全部是中文");
} else {
print("該字符串不全部是中文");
}
實例
下面這款匹配中文字符串正則表達式是一款利用數組,然後 多次for把全是中文字符串的打印出來。
*/
$str_arr = array(
"iameverysorry",
"快樂編程,快樂生活",
"php教程編程",
"1997年香港回歸",
"英語學習abc",
"www.bkjia.com"
);
$patt_ch = chr(0xa1) . "-" . chr(0xff);
foreach ($str_arr as $str)
{
echo "字符串'$str' 是";
if (preg_match("/^[$patt_ch]+$/", $str))
{
echo "<b>完全中文</b>";
echo "<br>";
echo "<br>";
}
else
{
echo "非完全中文";
echo "<br>";
echo "<br>";
}
}
更多詳細內容請查看:http://www.bkjia.com/phper/php-cy/34301.htm