php 正則表達式 匹配中日韓字符(GBK)

轉載鏈接:http://www.cnblogs.com/ITEagle/archive/2013/01/14/2859775.html


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

這里是幾個主要非英文語系字符范圍

2E80~33FFh:中日韓符號區。收容康熙字典部首、中日韓輔助部首、注音符號、日本假名、韓文音符,中日韓的符號、標點、帶圈或帶括符文數字、月份,以及日本的假名組合、單位、年號、月份、日期、時間等。

3400~4DFFh:中日韓認同表意文字擴充A區,總計收容6,582個中日韓漢字。

4E00~9FFFh:中日韓認同表意文字區,總計收容20,902個中日韓漢字。

A000~A4FFh:彝族文字區,收容中國南方彝族文字和字根。

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

F900~FAFFh:中日韓兼容表意文字區,總計收容302個中日韓漢字。

FB00~FFFDh:文字表現形式區,收容組合拉丁文字、希伯來文、阿拉伯文、中日韓直式標點、小符號、半角符號、全角符號等。

比如需要匹配所有中日韓非符號字符,那么正則表達式應該是^[\u3400-\u9FFF]+$?
理論上沒錯, 可是我到msn.co.ko隨便復制了個韓文下來, 發現根本不對, 詭異?
再到msn.co.jp復制了個'お', 也不得行..

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

而關于中文的正則表達式, 應該是^[\u4E00-\u9FFF]+$, 和論壇里常被人提起的^[\u4E00-\u9FA5]+$很接近

需要注意的是論壇里說的^[\u4E00-\u9FA5]+$這是專門用于匹配簡體中文的正則表達式, 實際上繁體字也在里面, 我用測試器測試了下'中華人民共和國', 也通過了, 當然, ^[\u4E00-\u9FFF]+$也是一樣的結果

?

然后上面的^[\u4E00-\u9FA5]+$形式的正則表達式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.

?

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

?

另外,在實際操作的時候,我們可能發現我們使用preg_replace函數,會產生和我們預期不符的結果。

$str= '你好,這里是賣咖啡!'; 

比如我們定義如上字符串,然后使用preg_replace函數。這是編碼的問題,我們使用的匹配字符串默認是utf-8編碼的,但是$str很可能是gbk的,這時候我們需要使用iconv函數先進行編碼轉化。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux多線程求和_linux 多線程信號處理總結

linux 多線程信號總結(一)1. 在多線程環境下,產生的信號是傳遞給整個進程的,一般而言,所有線程都有機會收到這個信號,進程在收到信號的的線程上下文執行信號處理函數,具體是哪個線程執行的難以獲知。也就是說&#xff…

Elon Musk

人物事件 成長學習 1971年6月28日,埃隆馬斯克在南非的比勒陀利亞出生,他的 埃隆馬斯克 父親是一名南非機電工程師,母親是加拿大人,從事營養師兼模特。[8] 1981年,10歲的馬斯克就擁有了自己的第一臺電腦,并…

真誠推薦這7個大佬的公眾號,碎片化學習

逆水行舟,不進則退。我們的工作已經占用了大塊的時間了,剩下的只有各種碎片,最適合碎片時間學習的,莫過于優質的技術干貨公眾號啦~以下這些是小編精選,里面有很多資訊和資源,內含干貨,希望能給大…

[轉]Windows 7 產品密鑰是否安全

提到Windows 7(或Windows Server 2008)有些人認為自己的產品密鑰(Product Key)很安全,甚至在公司內部有些網管也認為公司部署的Windows 7 系統的密鑰不會泄露。但其實并非如此,眾所周知我們的密鑰都是寫在注…

HttpWatch的Result中出現Aborted的原因分析[配圖]

轉載鏈接:http://www.cnblogs.com/yutiansanshou/archive/2013/02/01/2889486.html 我們在使用HttpWatch進行Web調試的過程中有時候會看到非HTTP Status Code(狀態碼)的值, 例如:(Aborted)。 (Aborted)是HttpWatch中定…

android顯示布局邊界的邊距_Android設計規范 Material Design-Layout(2 度量與邊框)

度量與邊框基準網絡所有組件都與間隔為8dp的基準網格對齊。排版/文字(Type)與間隔為4dp的基準網格對齊。在工具條中的圖標同樣與間隔為4dp的基準網格對齊。這些規則適用于移動設備、平板設備以及桌面應用程序。有關詳細信息請參見組件一節。有關詳細信息請參見字體排版一節。邊…

《大規模分布式系統架構與設計實戰》

《大規模分布式系統架構與設計實戰》 基本信息 作者: 彭淵 叢書名: 大數據技術叢書 出版社:機械工業出版社 ISBN:9787111455035 上架時間:2014-2-21 出版日期:2014 年2月 開本:16開 頁碼&…

WINDOWS下的squid

今天寫這篇教程目的在于分享自己在WINDOWS主機下配置squid的方法。哪些地方寫的不完善或是不完整或是需要修改的地方,大家可以提出。我會第一時間糾正。下面看正文部分。先提條件,您預安裝配置squid的這臺計算機必須是聯入網絡的,系統版本是w…

Provide/inject 真的可以取代 Vuex 嗎?

Hello,各位小伙伴,接下來的一段時間里,我會把我的課程《Vue.js 3.0 核心源碼解析》中問題的答案陸續在我的公眾號發布,由于課程的問題大多數都是開放性的問題,所以我的答案也不一定是標準的,僅供你參考喔。…

php 計算代碼執行時間

轉載鏈接:http://blog.csdn.net/php_boy/article/details/6450678 class runtime {var $StartTime 0;var $StopTime 0;function get_microtime(){list($usec, $sec) explode( , microtime());return ((float)$usec (float)$sec);}function start(){$this->S…

參數方程求二階偏導_偏微分方程

常微分方程(ODE) 的時候我們更多是關于時間的導數。偏微分方程(partial differential equation) 則不僅僅是與時間相關,加上了與空間位置相關的一些信息。解當 ODE 滿足 利普希茨連續(Lipschitz continuity&#xff09…

Spring Batch 批量處理策略

為了幫助設計和實現批量處理系統,基本的批量應用是通過塊和模式來構建的,同時也應該能夠為程序開發人員和設計人員提供結構的樣例和基礎的批量處理程序。當你開始設計一個批量作業任務的時候,商業邏輯應該被拆分一系列的步驟,而這…

CString原理介紹

看了很多人寫的程序,包括我自己寫的一些代碼,發現很大的一部分bug是關于MFC類中的CString的錯誤用法的.出現這種錯誤的原因主要是對CString的實現機制不是太了解。 CString是對于原來標準c中字符串類型的一種的包裝。因為,通過很長時間的編程&#xff0c…

如何從零開始開發一個 Chrome 插件?

什么是瀏覽器插件?簡單來說瀏覽器插件,是瀏覽器上的一種工具,可以提供一些瀏覽器沒有的功能,幫你做一些有趣的事情。開發者可以根據自己的喜歡,去實現一些功能。插件基于Web技術(html、css、js)…

mysql 重復字段查詢及排除重復值

轉載鏈接:http://blog.sina.com.cn/s/blog_3edc5e2e010131ys.html mysql 重復字段查詢及排除重復值 SELECT a.id,a.title FROM dede_archives a left join dede_taglist t on t.taga.title WHERE t.typeid$id and t.arcrank>-1 and a.typeid28 group by t.tag; …

swiper移入暫停_react中swiper注意事項及鼠標劃入停止輪播

首先是實例化swiper這里有一個注意點,就是實例化的時機如果你的swiper內容是寫死的,可以在componentDidMount中實例化,但是如果你的內容是通過接口異步請求過來的,就必須在componentDidUpdate里實例化,因為如果在 comp…

轉Excel的一種簡單方法

寫了這么久的程序﹐越來越喜歡那種簡單的解決方法﹐這段時間在做一個報表系統﹐其中有需要轉Excel﹐而且要求兼容openoffice﹐遂利用asp語法,asp.net的控件封裝特性以及excel 2003的xml試算清格式做了一個看起來比較"清爽"的excel轉檔方案。一.開始原理很簡單﹐excel…

詳解MySQL中EXPLAIN解釋命令

轉載鏈接:http://database.51cto.com/art/200912/168453.htm explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。 使用方法,在select語句前加上explain就可以了: 如:…

Shell編程基礎

我們可以使用任意一種文字編輯器,比如gedit、kedit、emacs、vi等來編寫shell腳本,它必須以如下行開始(必須放在文件的第一行): # !/bin/sh ...注意:最好使用“!/bin/bash”而不是“!/bin/sh”,…

總結:自學前端的高效學習路線

提到前端,大多數人都會想到薪資高。也正因為如此,很多人想要從事前端開發這個崗位,也由此衍生出來一個問題:為什么前端工程師供不應求,但還是有很多學前端的人找不到工作?其實行業不是缺前端工程師&#xf…