PHP漢語轉拼音(支持20378漢字)



PHP漢語轉拼音(支持20378漢字)

 在項目中需要通過php來實現抽取漢字的拼音功能,當時實現的方式使用GB2312的字庫來實現的,但是在項目中發現像”咔咔“這樣的漢字就無能爲力了,抽取不出來正確的拼音了。GB2312類庫的版本地址:http://blog.csdn.net/wgw335363240/article/details/38588151

   爲了能夠儘可能多的正確抽取出漢字的拼音,參考了pinyin4j.jar的java實現,把漢語拼音的抽取轉換爲php版本,經測試,使用到的漢字基本都可以轉換正確。在轉換的過程中,php引擎需要安裝了”mbstring“類庫的支持,因爲php引擎默認是使用iso-8859-1編碼來實現的(即strlen('中國')的長度爲6,相當於java中的”中國“.getBytes().length,它的長度也爲6,當時java提供了”中國“.tochars()的實現,這個方法得到的chars集合長度爲2,實際上就是按照漢字來遍歷的),mbstring類庫就相當於java中的tochars方法,把字符串按照漢字來遍歷。如果不安裝類庫,還要自己根據utf8編碼的規則類遍歷byte,從而實現對漢字的拼音的抽取。

   注意:

   (1)php需要支持mbstring類庫

   (2)php要是使用utf-8編碼編寫,這裏比較懶,沒有編寫支持其他語言

   漢字轉換拼音的原理如下:

   (1)定義Unicode與拼音的映射字典(在php體現爲數組),該字典從pinyin4j.jar文件,去掉了多音字和聲調

   (2)輸入一個漢字如”嚴厲“,利用mbstring類庫解析爲”嚴“和”厲“兩個字符

   (3)把解析後的”嚴“和”厲“依次調用相關方法抽取一個漢字的拼音,如先抽取”嚴“

   (4)把”嚴“字(此時是3個byte編碼)轉換爲Unicode碼(4E25,十進制爲:20005)

   (5)把Unicode碼(4E25)與字典的key進行比較,獲取到對應的拼音

   (6)”厲”字也採取同樣的策略來抽取拼音

   抽取效率:

       抽取一個漢字的時間:0.00076600000000004秒

   源碼下載地址

         http://download.csdn.net/detail/wgw335363240/8221461


發佈了210 篇原創文章 · 獲贊 202 · 訪問量 171萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章