下載地址: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
內存佔用量以實際爲準,根據版本、擴展等環境的不一樣,佔用的內存容量不同,上述值爲我電腦上的狀況,僅供參考。工具
性能模式適合運行於持久性服務,推薦使用 Swoole 開發服務程序,只加載一次數據,無需重複加載。固然,你服務器內存足夠大,或者併發訪問不高也可使用這種模式。性能
性能模式和通用模式須要 PDO 和 PDO_SQLITE 擴展支持。
兼容模式無擴展依賴,因爲精簡了數據,一些拼音結果須要通過代碼計算處理才能夠得出,因此性能較差。
默認狀況下,優先使用通用模式,若是環境不支持 PDO 將採用兼容模式。
你能夠在未執行任何初始化或者轉換處理以前,設置使用何種模式運行。
// 設爲性能模式 Chinese::setMode('Memory'); // 設爲通用模式 Chinese::setMode('SQLite'); // 設爲兼容模式 Chinese::setMode('JSON');
不管何種模式,拼音分詞所需數據老是從 JSON 數據中加載。
composer require yurunsoft/chinese-util
"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"