日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php 正则表达式 匹配中日韩字符(GBK)

發(fā)布時(shí)間:2023/12/9 php 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 正则表达式 匹配中日韩字符(GBK) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載鏈接:http://www.cnblogs.com/ITEagle/archive/2013/01/14/2859775.html


首先是這些非英文字符的編碼范圍:

這里是幾個(gè)主要非英文語(yǔ)系字符范圍

2E80~33FFh:中日韓符號(hào)區(qū)。收容康熙字典部首、中日韓輔助部首、注音符號(hào)、日本假名、韓文音符,中日韓的符號(hào)、標(biāo)點(diǎn)、帶圈或帶括符文數(shù)字、月份,以及日本的假名組合、單位、年號(hào)、月份、日期、時(shí)間等。

3400~4DFFh:中日韓認(rèn)同表意文字?jǐn)U充A區(qū),總計(jì)收容6,582個(gè)中日韓漢字。

4E00~9FFFh:中日韓認(rèn)同表意文字區(qū),總計(jì)收容20,902個(gè)中日韓漢字。

A000~A4FFh:彝族文字區(qū),收容中國(guó)南方彝族文字和字根。

AC00~D7FFh:韓文拼音組合字區(qū),收容以韓文音符拼成的文字。

F900~FAFFh:中日韓兼容表意文字區(qū),總計(jì)收容302個(gè)中日韓漢字。

FB00~FFFDh:文字表現(xiàn)形式區(qū),收容組合拉丁文字、希伯來(lái)文、阿拉伯文、中日韓直式標(biāo)點(diǎn)、小符號(hào)、半角符號(hào)、全角符號(hào)等。

比如需要匹配所有中日韓非符號(hào)字符,那么正則表達(dá)式應(yīng)該是^[\u3400-\u9FFF]+$?
理論上沒(méi)錯(cuò), 可是我到msn.co.ko隨便復(fù)制了個(gè)韓文下來(lái), 發(fā)現(xiàn)根本不對(duì), 詭異?
再到msn.co.jp復(fù)制了個(gè)'お', 也不得行..

然后把范圍擴(kuò)大到^[\u2E80-\u9FFF]+$, 這樣倒是都通過(guò)了, 這個(gè)應(yīng)該就是匹配中日韓文字的正則表達(dá)式了, 包括我們臺(tái)灣省還在盲目使用的繁體中文

而關(guān)于中文的正則表達(dá)式, 應(yīng)該是^[\u4E00-\u9FFF]+$, 和論壇里常被人提起的^[\u4E00-\u9FA5]+$很接近

需要注意的是論壇里說(shuō)的^[\u4E00-\u9FA5]+$這是專(zhuān)門(mén)用于匹配簡(jiǎn)體中文的正則表達(dá)式, 實(shí)際上繁體字也在里面, 我用測(cè)試器測(cè)試了下'中華人民共和國(guó)', 也通過(guò)了, 當(dāng)然, ^[\u4E00-\u9FFF]+$也是一樣的結(jié)果

?

然后上面的^[\u4E00-\u9FA5]+$形式的正則表達(dá)式php是不支持的。在stackoverflow上可以找到如下解決方案:

PCRE does not support the?\uXXXX?syntax. Use?\x{XXXX}?instead. See?here.

Your?\u2e80-\u9fff?range is also equivalent to

\p{InCJK_Radicals_Supplement}\p{InKangxi_Radicals}\p{InIdeographic_Description_Characters}\p{InCJK_Symbols_and_Punctuation}\p{InHiragana}\p{InKatakana}\p{InBopomofo}\p{InHangul_Compatibility_Jamo}\p{InKanbun}\p{InBopomofo_Extended}\p{InKatakana_Phonetic_Extensions}\p{InEnclosed_CJK_Letters_and_Months}\p{InCJK_Compatibility}\p{InCJK_Unified_Ideographs_Extension_A}\p{InYijing_Hexagram_Symbols}\p{InCJK_Unified_Ideographs}

Don't forget to add the?u?modifier (/regex here/u) if you're dealing with UTF-8. If you're dealing with another multi-byte encoding, you must first?convert?it to UTF-8.

?

也就是說(shuō),php要這樣寫(xiě)/[\x{2E80}-\x{9FFF}]+/u

?

另外,在實(shí)際操作的時(shí)候,我們可能發(fā)現(xiàn)我們使用preg_replace函數(shù),會(huì)產(chǎn)生和我們預(yù)期不符的結(jié)果。

$str= '你好,這里是賣(mài)咖啡!';

比如我們定義如上字符串,然后使用preg_replace函數(shù)。這是編碼的問(wèn)題,我們使用的匹配字符串默認(rèn)是utf-8編碼的,但是$str很可能是gbk的,這時(shí)候我們需要使用iconv函數(shù)先進(jìn)行編碼轉(zhuǎn)化。


總結(jié)

以上是生活随笔為你收集整理的php 正则表达式 匹配中日韩字符(GBK)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。