亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

php中utf-8編碼下用正則表達式如何匹配漢字

2020-01-20 22:21:11
字體:
來源:轉載
供稿:網友
在javascript中,要判斷字符串是中文是很簡單的。比如:
復制代碼 代碼如下:

var str = "php編程";
if (/^[/u4e00-/u9fa5]+$/.test(str)) {
alert("該字符串全部是中文");
} else {
alert("該字符串不全部是中文");
}

想當然的,在php中來判斷字符串是否為中文,就會沿襲這個思路:
復制代碼 代碼如下:

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

不過,很快就會發現,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表示十六進制數據的。于是,變換成如下的代碼:
$str = "php編程";
if (preg_match("/^[/x4e00-/x9fa5]+$/",$str)) {
print("該字符串全部是中文");
} else {
print("該字符串不全部是中文");
}
貌似不報錯了,判斷的結果也正確,不過把$str換成“編程”兩字,結果卻還是顯示“該字符串不全部是中文”,看來這樣的判斷還是不夠準確。
后來跑回百度搜“php 匹配漢字 utf 8”,發現文章的匹配程度竟然要比google的高多了,看來百度的“百度更懂中文”還在一定程度上是正確的。在第二篇文章《★★★ 求UTF8下匹配漢字的正則, 在線等.........》中看到了如下的一些內容:
樓主zhiin(┈ Jcan ┈)2006-11-15 15:59:30 在 Web 開發 / PHP 提問
求UTF8下匹配漢字的正則, 不包括全角字符及特殊符號!
網上只能找到匹配全角字符的正則: ^[/x80-/xff]*^/
[/u4e00-/u9fa5]可以匹配中文,但是PHP又不支持
郁悶中.......
1 樓PleaseDoTellMeWhy(Allah bless you!)回復于 2006-11-15 16:04:55 得分 11
chr(0xa1) . '-' . chr(0xff)可以匹配所有中文,但是不知道在UTF-8下如何!Top
2 樓zhiin(┈ Jcan ┈)回復于 2006-11-15 16:11:34 得分 0
即使在gb2312下, chr(0xa1) . '-' . chr(0xff) 也不對
它把全角符號也匹配進來了Top
3 樓xuzuning(嘮叨)回復于 2006-11-15 16:19:56 得分 90
模式修正符: u
按照這幾位提供的線索逐個試了一下,發現還真的如他們所說,可能還跟編碼有關系,因此需要了解一下模式修正符的相關知識――于是繼續搜索百度。
在一篇《模式修正符》的文章中了解到:
u (PCRE_UTF8)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式字符串被當成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。
例子:
preg_match('/[/x{2460}-/x{2468}]/u', $str); 匹配 內碼漢字
按照他提供的方式進行測試,代碼如下:
復制代碼 代碼如下:

$str = "php編程";
if (preg_match("/^[/x{2460}-/x{2468}]+$/u",$str)) {
print("該字符串全部是中文");
} else {
print("該字符串不全部是中文");
}

發現這次依然對是否為中文判斷失常。不過,既然/x表示的十六進制數據,為什么和js里邊提供的范圍/x4e00-/x9fa5不一樣呢?于是我就換成了下邊的代碼:
復制代碼 代碼如下:

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

本來以為鐵定成功了的事情,沒想到,warning又一次產生了:
Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 6 in test.php on line 3
看來又有錯誤的表達方式了,于是對照了一下那篇文章的表達方式,給“4e00”和“9fa5”兩邊分別用"{"和“}”包起來,跑了一遍,發現真的準確了:
復制代碼 代碼如下:

$str = "php編程";
if (preg_match("/^[/x{4e00}-/x{9fa5}]+$/u",$str)) {
print("該字符串全部是中文");
} else {
print("該字符串不全部是中文");
}

知道了php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式――/^[/x{4e00}-/x{9fa5}]+$/u,于是我又用這個表達式去百度搜索,發現竟然還真有別人得出過這樣正確的結論,只不過通過常規的方式很難找到而已,而且僅僅搜到有一篇――《用正則刪除漢字》,看來互聯網上對于信息的正確性的篩選還是亟待加強的。
ps:對google不死心,也搜索了一下,又發現了一篇文章《php常用類》,還是在百度空間的,呵呵,有意思!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品热久久| 亚洲欧美一区二区三区情侣bbw| 亚洲自拍高清视频网站| 日韩综合中文字幕| 中文字幕日韩免费视频| 2018日韩中文字幕| 亚洲国产精品专区久久| 亚洲自拍高清视频网站| 91免费国产视频| 久久国产一区二区三区| 午夜精品久久17c| 中文字幕在线精品| 日韩av中文字幕在线播放| 青青久久av北条麻妃黑人| 日韩av在线免费观看| 日韩在线观看网站| 亚洲电影免费观看| 性色av一区二区三区在线观看| 亚洲成色www8888| 日韩一区二区福利| 亚洲欧美日韩中文视频| 欧美在线视频观看| 亚洲护士老师的毛茸茸最新章节| 欧美大荫蒂xxx| 中文字幕日韩欧美| 日韩av电影手机在线| 国产精品对白刺激| 国产亚洲精品成人av久久ww| 国产精品久久不能| 有码中文亚洲精品| 日韩中文字幕久久| 亚洲黄色成人网| 91久久久久久久久久| 国产成人精品久久亚洲高清不卡| 视频在线观看一区二区| 日韩免费在线观看视频| 亚洲综合在线中文字幕| 日韩av123| 亚洲二区中文字幕| 91国语精品自产拍在线观看性色| 欧美日韩激情小视频| 中文字幕日韩电影| 国产91在线高潮白浆在线观看| 久久国产精品99国产精| 欧美一级淫片videoshd| 亚洲娇小xxxx欧美娇小| 成人激情视频在线观看| 欧美高清无遮挡| 一夜七次郎国产精品亚洲| 日本欧美爱爱爱| 国产一区二区三区欧美| 97久久国产精品| 久久综合伊人77777| 久久久999精品视频| 日韩欧美精品网站| 亚洲男人天堂网| 成人免费看吃奶视频网站| 亚洲美女福利视频网站| 日本国产欧美一区二区三区| 精品国产一区二区三区四区在线观看| 欧美中在线观看| 久久久精品电影| 亚洲免费人成在线视频观看| 2018国产精品视频| 亚洲欧美一区二区三区四区| 久久久久久久久久久av| 中日韩美女免费视频网站在线观看| 亚洲男人天堂2019| 亚洲国产美女精品久久久久∴| 国产91久久婷婷一区二区| 日韩精品高清在线| 欧美综合一区第一页| 亚洲美女视频网站| 亚洲一区二区久久| 日韩一中文字幕| 欧美日产国产成人免费图片| 在线性视频日韩欧美| 97国产一区二区精品久久呦| 欧美床上激情在线观看| 久久久精品亚洲| 亚洲性猛交xxxxwww| 国产欧美韩国高清| 超碰日本道色综合久久综合| 亚洲天堂av图片| 正在播放欧美视频| 欧美又大又硬又粗bbbbb| 日韩精品免费在线观看| 精品视频9999| 欧美电影在线免费观看网站| 97av视频在线| 欧美精品在线第一页| 国产午夜精品一区理论片飘花| 日韩中文字幕在线播放| 51视频国产精品一区二区| 精品成人久久av| 三级精品视频久久久久| 91精品久久久久久久久久| 久久精品99无色码中文字幕| 2018日韩中文字幕| 日韩欧美在线免费观看| 国产成人一区二区三区电影| 国产一区二区在线免费视频| 日本电影亚洲天堂| 久久好看免费视频| 欧美日韩高清区| 久久国产精品久久久久久久久久| 亚洲视频精品在线| 欧美日韩成人网| 亚洲午夜av电影| 欧美另类69精品久久久久9999| 国产精品久久久久不卡| 成人精品在线视频| 国产精品96久久久久久又黄又硬| 国产精品96久久久久久又黄又硬| 国产精品高潮呻吟久久av黑人| 精品国产欧美一区二区五十路| 国产日韩在线观看av| 亚洲欧美日韩精品久久| 亚洲久久久久久久久久久| 亚洲成人a级网| 日本精品久久久久久久| 日韩毛片在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 欧美人在线视频| 亚洲精品国偷自产在线99热| 成人精品视频99在线观看免费| 欧美性一区二区三区| 视频一区视频二区国产精品| 最近2019中文字幕mv免费看| 亚洲免费一级电影| 91精品视频专区| 午夜精品久久久久久99热软件| 国产91在线高潮白浆在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产一区二区黑人欧美xxxx| 久久久女人电视剧免费播放下载| 亚洲精品国产精品自产a区红杏吧| 欧美日韩亚洲精品一区二区三区| 中文字幕日韩免费视频| 国产精品免费久久久久久| 日韩精品在线视频| 国产成人在线一区| 一色桃子一区二区| 久久久国产一区二区三区| 亚洲精品中文字| 精品成人久久av| 日韩精品一二三四区| 高清亚洲成在人网站天堂| 91精品国产91久久久| 亚洲xxx大片| 久久99久国产精品黄毛片入口| 欧美日韩国产专区| 亚洲激情视频网| 久久久伊人日本| 久国内精品在线| 国产视频在线一区二区| 91精品国产综合久久香蕉最新版| 日韩高清有码在线| 国产在线观看一区二区三区| 国产视频精品va久久久久久| 亚洲精品视频中文字幕| 国产精品久久77777| 欧美一区二区色| 日韩精品中文字幕视频在线|