到目前爲止這多是最準確的一個解決方案了,大GitHub上各類找,沒有一個好用的,大部分都只是漢字轉拼音,因此包含多音字的結果基本都錯誤。固然也有基於詞典的轉換工具,不過仍是解決不了詞庫不全形成的多音字問題(固然,徹底解決是不太可能的,或者詞庫會無比的大)。好比康熙來了
大部分工具的試用結果是:kang xi lai liao.php
基於上面的緣由,我造了下面這個輪子。特色以下:html
主頁:http://overtrue.me/pinyinjson
基於CC-CEDICT詞典的中文轉拼音工具, 更準確的漢字轉拼音解決方案。 CC-CEDICT.composer
use \Overtrue\Pinyin; echo Pinyin::pinyin('帶着但願去旅行,比到達終點更美好'); // 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::pinyin('瞭然'); // liǎo rán Pinyin::pinyin('來了'); // lái le // 還 Pinyin::pinyin('還有'); // hái yǒu Pinyin::pinyin('交還'); // jiāo huán // 什 Pinyin::pinyin('什麼'); // shén me Pinyin::pinyin('什錦'); // shí jǐn // 便 Pinyin::pinyin('便當'); // biàn dāng Pinyin::pinyin('便宜'); // pián yí // 剝 Pinyin::pinyin('剝皮'); // bāo pí Pinyin::pinyin('剝皮器'); // bō pí qì // 不 Pinyin::pinyin('賠不是'); // péi bú shi Pinyin::pinyin('跑了和尚,跑不了廟'); // pǎo le hé shàng , pǎo bù liǎo miào // 降 Pinyin::pinyin('降溫'); // jiàng wēn Pinyin::pinyin('投降'); // tóu xiáng // 都 Pinyin::pinyin('首都'); // shǒu dū Pinyin::pinyin('都什麼年代了'); // dōu shén me nián dài le // 樂 Pinyin::pinyin('快樂'); // kuài lè Pinyin::pinyin('音樂'); // yīn yuè // 長 Pinyin::pinyin('成長'); // chéng zhǎng Pinyin::pinyin('長江'); // cháng jiāng // 難 Pinyin::pinyin('難民'); // nàn mín Pinyin::pinyin('難過'); // nán guò ...
composer require overtrue/pinyin >=1.4
或者在你的項目composer.json加入:工具
{ "require": { "overtrue/pinyin": ">=1.4" } }
src/Overtrue/Pinyin.php
引入到項目中。<?php use \Overtrue\Pinyin; //獲取拼音 echo Pinyin::pinyin('帶着但願去旅行,比到達終點更美好'); //或者: Overtrue\pinyin($string); // dài zhe xī wàng qù lǔ xíng bǐ dào dá zhōng diǎn gèng měi hǎo //獲取首字母 echo Pinyin::letter('帶着但願去旅行,比到達終點更美好'); // D Z X W Q L X B D D Z D G M H
delimiter
分隔符,默認爲一個空格 ‘ ‘;traditional
繁體accent
是否輸出音調;letter
只輸出首字母,或者直接使用Pinyin::letter($string)
;only_chinese
只保留$string中中文部分。ui
全局設置:* Pinyin::set('delimiter', '-');
spa
Pinyin::pinyin($word, $settings)
在調用的方法後傳參example:.net
Pinyin::set('delimiter', '-');//全局 echo Pinyin::pinyin('帶着但願去旅行,比到達終點更美好'); // dài-zhe-xī-wàng-qù-lǔ-xíng-bǐ-dào-dá-zhōng-diǎn-gèng-měi-hǎo
$setting = [ 'delimiter' => '-', 'accent' => false, ]; echo Pinyin::pinyin('帶着但願去旅行,比到達終點更美好', $setting);//這裏的setting只是臨時修改,並不是全局設置 // dai-zhe-xi-wang-qu-lu-xing-bi-dao-da-zhong-dian-geng-mei-hao
Pinyin::set('accent', false); echo Pinyin::pinyin('帶着但願去旅行,比到達終點更美好'); // dai zhe xi wang qu lu xing bi dao da zhong dian geng mei hao
歡迎提意見及完善補充詞庫 src/Overtrue/data/additional.php
! code
MIThtm