Pinyin
🇨🇳 基於 CC-CEDICT 詞典的中文轉拼音工具,更准確的支持多音字的漢字轉拼音解決方案。
安裝
使用 Composer 安裝:
$ composer require "overtrue/pinyin:~4.0"
使用
可選轉換方案:
- 內存型,適用於服務器內存空間較富余,優點:轉換快
- 小內存型(默認),適用於內存比較緊張的環境,優點:占用內存小,轉換不如內存型快
- I/O型,適用於虛擬機,內存限制比較嚴格環境。優點:非常微小內存消耗。缺點:轉換慢,不如內存型轉換快,php >= 5.5
可用選項:
選項 | 描述 |
---|---|
PINYIN_TONE |
UNICODE 式音調:měi hǎo |
PINYIN_ASCII_TONE |
帶數字式音調: mei3 hao3 |
PINYIN_NO_TONE |
無音調:mei hao |
PINYIN_KEEP_NUMBER |
保留數字 |
PINYIN_KEEP_ENGLISH |
保留英文 |
PINYIN_KEEP_PUNCTUATION |
保留標點 |
PINYIN_UMLAUT_V |
使用 v 代替 yu , 例如:呂 lyu 將會轉為 lv |
拼音數組
use Overtrue\Pinyin\Pinyin;
// 小內存型
$pinyin = new Pinyin(); // 默認
// 內存型
// $pinyin = new Pinyin('\\Overtrue\\Pinyin\\MemoryFileDictLoader');
// I/O型
// $pinyin = new Pinyin('\\Overtrue\\Pinyin\\GeneratorFileDictLoader');
$pinyin->convert('帶着希望去旅行,比到達終點更美好');
// ["dai", "zhe", "xi", "wang", "qu", "lyu", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"]
$pinyin->convert('帶着希望去旅行,比到達終點更美好', PINYIN_TONE);
// ["dài","zhe","xī","wàng","qù","lǚ","xíng","bǐ","dào","dá","zhōng","diǎn","gèng","měi","hǎo"]
$pinyin->convert('帶着希望去旅行,比到達終點更美好', PINYIN_ASCII_TONE);
//["dai4","zhe","xi1","wang4","qu4","lyu3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"]
- 小內存型: 將字典分片載入內存
- 內存型: 將所有字典預先載入內存
- I/O型: 不載入內存,將字典使用文件流打開逐行遍歷並運用php5.5生成器(yield)特性分配單行內存
生成用於鏈接的拼音字符串
$pinyin->permalink('帶着希望去旅行'); // dai-zhe-xi-wang-qu-lyu-xing
$pinyin->permalink('帶着希望去旅行', '.'); // dai.zhe.xi.wang.qu.lyu.xing
獲取首字符字符串
$pinyin->abbr('帶着希望去旅行'); // dzxwqlx
$pinyin->abbr('帶着希望去旅行', '-'); // d-z-x-w-q-l-x
$pinyin->abbr('你好2018!', PINYIN_KEEP_NUMBER); // nh2018
$pinyin->abbr('Happy New Year! 2018!', PINYIN_KEEP_ENGLISH); // HNY2018
翻譯整段文字為拼音
將會保留中文字符:,。 ! ? : “ ” ‘ ’
並替換為對應的英文符號。
$pinyin->sentence('帶着希望去旅行,比到達終點更美好!');
// dai zhe xi wang qu lyu xing, bi dao da zhong dian geng mei hao!
$pinyin->sentence('帶着希望去旅行,比到達終點更美好!', PINYIN_TONE);
// dài zhe xī wàng qù lǚ xíng, bǐ dào dá zhōng diǎn gèng měi hǎo!
翻譯姓名
姓名的姓的讀音有些與普通字不一樣,比如 ‘單’ 常見的音為 dan
,而作為姓的時候讀 shan
。
$pinyin->name('單某某'); // ['shan', 'mou', 'mou']
$pinyin->name('單某某', PINYIN_TONE); // ["shàn","mǒu","mǒu"]
更多使用請參考 測試用例。
在 Laravel 中使用
獨立的包在這里:overtrue/laravel-pinyin
Contribution
歡迎提意見及完善補充詞庫 overtrue/pinyin-dictionary-maker
💋
參考
PHP 擴展包開發
想知道如何從零開始構建 PHP 擴展包?
請關注我的實戰課程,我會在此課程中分享一些擴展開發經驗 —— 《PHP 擴展包實戰教程 - 從入門到發布》