PHP 中文工具類,支持漢字轉拼音、拼音分詞、簡繁互轉

ChineseUtil

下載地址:https://github.com/Yurunsoft/ChineseUtilphp

另一箇中文轉拼音工具:https://github.com/overtrue/pinyinhtml

PHP 中文工具類,支持漢字轉拼音、拼音分詞、簡繁互轉。git

PHP Chinese Tool class, support Chinese pinyin, pinyin participle, simplified and traditional conversiongithub

目前本類庫擁有的三個功能,都是在實際開發過程當中整理出來的。此次使用的數據不一樣於之前我開源過漢字轉拼音和簡繁互轉,數據都是從字典網站採集下來的,比之前的數據更加準確。數組

因爲中文的博大精深,字有多音字,簡體字和繁體字也有多種對應。而且本類庫返回的全部結果,均爲包含全部組合的數組。服務器

本類庫字典數據總共收錄 73925 個漢字,包括:3955 個簡體字,1761 個繁體字,68209 個其它漢字。併發

內存佔用

類庫第一個版本發佈開始,羣裏朋友就展開了激烈的討論,最大的問題就在於內存佔用以及性能問題上。通過我不斷嘗試幾種方案,最終決定設置三種模式,來適應不一樣用戶之間的需求。composer

  • 性能模式 (Memory),使用 SQLite 做爲數據載體,一次性加載全部數據到變量,內存佔用高(80 MB),性能最佳。
  • 通用模式 (SQLite),使用 SQLite 做爲數據載體,每次查詢都經過 SQL 查詢,內存佔用低(600+ KB),性能中等。
  • 兼容模式 (JSON),使用精簡過的 JSON 數據做爲數據載體,一次性加載全部數據到變量,內存佔用中(28 MB),性能差。

內存佔用量以實際爲準,根據版本、擴展等環境的不一樣,佔用的內存容量不同,上述值爲我電腦上的狀況,僅供參考。工具

性能模式適合運行於持久性服務,推薦使用 Swoole 開發服務程序,只加載一次數據,無需重複加載。固然,你服務器內存足夠大,或者併發訪問不高也可使用這種模式。性能

性能模式和通用模式須要 PDO 和 PDO_SQLITE 擴展支持。

兼容模式無擴展依賴,因爲精簡了數據,一些拼音結果須要通過代碼計算處理才能夠得出,因此性能較差。

默認狀況下,優先使用通用模式,若是環境不支持 PDO 將採用兼容模式。

你能夠在未執行任何初始化或者轉換處理以前,設置使用何種模式運行。

// 設爲性能模式 Chinese::setMode('Memory'); // 設爲通用模式 Chinese::setMode('SQLite'); // 設爲兼容模式 Chinese::setMode('JSON');

不管何種模式,拼音分詞所需數據老是從 JSON 數據中加載。

使用說明

Composer 直接安裝

composer require yurunsoft/chinese-util

Composer 項目配置引入

"require": {
    "yurunsoft/chinese-util" : "~1.0"
}

功能

漢字轉拼音

use \Yurun\Util\Chinese; $string = '恭喜發財!'; echo $string, PHP_EOL;  echo '全拼:', PHP_EOL; var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN));  echo '首字母:', PHP_EOL; var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_FIRST));  echo '讀音:', PHP_EOL; var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_SOUND));  echo '讀音數字:', PHP_EOL; var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER));  echo '自選返回格式 + 以文本格式返回 + 自定義分隔符:', PHP_EOL; var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN | Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER, ' '));  echo '全部結果:', PHP_EOL; var_dump(Chinese::toPinyin($string)); /** 全部結果: array(4) {  ["pinyin"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(4) "gong"  [1]=>  string(2) "xi"  [2]=>  string(2) "fa"  [3]=>  string(3) "cai"  [4]=>  string(3) "!"  }  }  ["pinyinSoundNumber"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(5) "gong1"  [1]=>  string(3) "xi3"  [2]=>  string(3) "fa1"  [3]=>  string(4) "cai2"  [4]=>  string(3) "!"  }  }  ["pinyinFirst"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(1) "g"  [1]=>  string(1) "x"  [2]=>  string(1) "f"  [3]=>  string(1) "c"  [4]=>  string(3) "!"  }  }  ["pinyinSound"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(5) "gōng"  [1]=>  string(3) "xǐ"  [2]=>  string(3) "fā"  [3]=>  string(4) "cái"  [4]=>  string(3) "!"  }  } } 全拼: array(1) {  ["pinyin"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(4) "gong"  [1]=>  string(2) "xi"  [2]=>  string(2) "fa"  [3]=>  string(3) "cai"  [4]=>  string(3) "!"  }  } } 首字母: array(1) {  ["pinyinFirst"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(1) "g"  [1]=>  string(1) "x"  [2]=>  string(1) "f"  [3]=>  string(1) "c"  [4]=>  string(3) "!"  }  } } 讀音: array(1) {  ["pinyinSound"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(5) "gōng"  [1]=>  string(3) "xǐ"  [2]=>  string(3) "fā"  [3]=>  string(4) "cái"  [4]=>  string(3) "!"  }  } } 讀音數字: array(1) {  ["pinyinSoundNumber"]=>  array(1) {  [0]=>  array(5) {  [0]=>  string(5) "gong1"  [1]=>  string(3) "xi3"  [2]=>  string(3) "fa1"  [3]=>  string(4) "cai2"  [4]=>  string(3) "!"  }  } } 自選返回格式 + 以文本格式返回 + 自定義分隔符: array(2) {  ["pinyin"]=>  array(1) {  [0]=>  string(18) "gong xi fa cai !"  }  ["pinyinSoundNumber"]=>  array(1) {  [0]=>  string(22) "gong1 xi3 fa1 cai2 !"  } }  * /

拼音分詞

use \Yurun\Util\Chinese; $string2 = 'xianggang'; echo '"', $string2, '"的分詞結果:', PHP_EOL; var_dump(Chinese::splitPinyin($string2)); /** 輸出結果: "xianggang"的分詞結果: array(2) {  [0]=>  string(12) "xi ang gang "  [1]=>  string(11) "xiang gang " }  * /

簡繁互轉

use \Yurun\Util\Chinese; $string3 = '中華人民共和國!恭喜發財!'; echo '"', $string3, '"的簡體轉換:', PHP_EOL; var_dump(Chinese::toSimplified($string3)); echo '"', $string3, '"的繁體轉換:', PHP_EOL; var_dump(Chinese::toTraditional($string3)); /** 輸出結果: "中華人民共和國!恭喜發財!"的簡體轉換: array(1) {  [0]=>  string(39) "中華人民共和國!恭喜發財!" } "中華人民共和國!恭喜發財!"的繁體轉換: array(1) {  [0]=>  string(39) "中華人民共和國!恭喜發財!" }  * /
相關文章
相關標籤/搜索