日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php正則表達式匹配中文

php正則表達式匹配中文

來源:程序員人生   發布時間:2014-04-06 13:23:41 閱讀次數:3633次

在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:中文字符 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线三区 | 成人免费a级片 | 五月天天色 | 日韩av网站大全 | 亚洲福利电影 | 国产精品黄在线观看 | 国产精品一区免费视频 | 日韩不卡一区二区三区 | 中文字幕成人av | 国产精品18久久久久久久网站 | 色婷婷综合久久久中文字幕 | 91日韩在线| 麻豆av在线免费 | 亚洲福利在线观看 | 国内精品一区二区 | 成年人黄网站 | 久久久久久久av | 精品视频在线看 | 精品久久久999 | 国产欧美精品在线 | 国产视频在线一区二区 | 爱爱免费视频 | 国产精品视频一区二区三区不卡 | 日韩黄网站 | 国产一区二区三区四区五区入口 | 国户精品久久久久久久久久久不卡 | 福利影院在线 | 国产精品久久久久久久久久大牛 | 色婷婷色综合 | 日韩福利在线 | 久久福利 | 久久国精品 | 国产毛片视频 | 中文在线资源天堂 | cao久久 | 精品久久国产 | 日韩一区二区免费电影 | 亚洲精品视频在线观看免费 | 在线成人 | 久久精品中文字幕 | 天堂аⅴ在线最新版在线 |