国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php正則表達式匹配中文

2024-09-04 11:47:16
字體:
來源:轉載
供稿:網友

在php中要利用正則來匹配中文漢字的話我們需要了解字符串編碼然后還有漢字的內碼這樣才可以方便快速的實現精確的匹配中文漢字出來,在php中來判斷字符串是否為中文,就會沿襲這個思路,代碼如下:

  1. <?php 
  2. $str = "php編程"
  3. if (preg_match("/^[u4e00-u9fa5]+$/",$str)) { 
  4. print("該字符串全部是中文"); 
  5. else { 
  6. print("該字符串不全部是中文"); 
  7. ?> 

不過,很快就會發現,php并不支持這樣的表達,報錯:

Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does not support L, l, N, U,or u at offset 3 in test.php on line 3

剛開始從google上查了很多次,想從php正則表達式對于十六進制數據的表達方式上進行突破,發現在php中,是用x表示十六進制數據的,于是,變換成如下的代碼:

  1. $str = "php編程"
  2. if (preg_match("/^[x4e00-x9fa5]+$/",$str)) { 
  3. print("該字符串全部是中文"); 
  4. else { 
  5. print("該字符串不全部是中文"); 

貌似不報錯了,判斷的結果也正確,不過把$str換成“編程”兩字,結果卻還是顯示“該字符串不全部是中文”,看來這樣的判斷還是不夠準確。

如果要精準匹配中文,即匹配純中文字符,或匹配中文字符加上全角標點,則需要根據不同編碼環境使用不同方法。

下面以兩種常用的編碼(gb2312,utf-8)代碼如下:

  1. //ANSI編程環境下: 
  2. $strtest = “yyg中文字符yyg”; 
  3. $pregstr = "/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i"
  4. if(preg_match($pregstr,$strtest,$matchArray)){ 
  5. echo $matchArray[0]; 
  6. //output:中文字符 
  1. //Utf-8編程環境下: 
  2. $strtest = “yyg中文字符yyg”; 
  3. $pregstr = "/[x{4e00}-x{9fa5}]+/u"
  4. if(preg_match($pregstr,$strtest,$matchArray)){ 
  5. echo $matchArray[0]; 
  6. //output:中文字符 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克什克腾旗| 克东县| 汕头市| 永吉县| 孝义市| 昔阳县| 元谋县| 芦溪县| 鄂州市| 丰镇市| 安化县| 肥东县| 岳普湖县| 大姚县| 漳平市| 关岭| 武功县| 淮南市| 富阳市| 屯留县| 涟水县| 武山县| 保定市| 桂东县| 榕江县| 精河县| 清镇市| 潞西市| 关岭| 桑日县| 通榆县| 福安市| 玉龙| 海丰县| 逊克县| 城市| 徐闻县| 肃南| 阜康市| 彩票| 赣州市|