本文章總結了php中利用Regex來匹配中文的一些執行個體函數,有需要的朋友可參考參考。
我們先要明白
中文雙位元組字元編碼範圍
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
| 代碼如下 |
複製代碼 |
$str = '正則如何匹配中文字在某中文字串中?'; preg_match("/中/",$str,$regs); print_r($regs); ?>
|
輸出
Array
(
[0] => 中
)
例2
| 代碼如下 |
複製代碼 |
$str = '這裡是中文 this is English'; //把中文變成紅色 echo preg_replace("/([x80-xff].)/","1",$str); //把非中文變成紅色 echo preg_replace("/([x20-x7f])/","1",$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編碼下用Regex匹配漢字的最終正確運算式——/^[x{4e00}-x{9fa5}]+$/u
| 代碼如下 |
複製代碼 |
$str = "php編程"; if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) { print("該字串全部是中文"); } else { print("該字串不全部是中文"); } |
執行個體
下面這款匹配中文字串Regex是一款利用數組,然後 多次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 "完全中文"; echo " "; echo " "; } else { echo "非完全中文"; echo " "; echo " "; } } |
更多詳細內容請查看:http://www.bkjia.com/phper/php-cy/34301.htm
http://www.bkjia.com/PHPjc/444649.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444649.htmlTechArticle本文章總結了php中利用Regex來匹配中文的一些執行個體函數,有需要的朋友可參考參考。 我們先要明白 中文雙位元組字元編碼範圍 1. GBK...