php 漢字轉拼音

到目前爲止這多是最準確的一個解決方案了,大GitHub上各類找,沒有一個好用的,大部分都只是漢字轉拼音,因此包含多音字的結果基本都錯誤。固然也有基於詞典的轉換工具,不過仍是解決不了詞庫不全形成的多音字問題(固然,徹底解決是不太可能的,或者詞庫會無比的大)。好比康熙來了 大部分工具的試用結果是:kang xi lai liao.php

基於上面的緣由,我造了下面這個輪子。特色以下:html

  • 基於CC-CEDICT.詞典,解決大部分詞彙問題;
  • 添加補充詞典,解決CC-CEDICT不全或者不許確的問題;
  • 添加詞頻表,根據使用頻率再一步提升多音字的準確度;

Pinyin

主頁: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ò
...

安裝

  1. 使用 Composer 安裝:
composer require overtrue/pinyin >=1.4

或者在你的項目composer.json加入:工具

{
    "require": {
        "overtrue/pinyin": ">=1.4"
    }
}
  1. 直接下載文件 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

Contribution

歡迎提意見及完善補充詞庫 src/Overtrue/data/additional.php:kiss:code

參考

License

MIThtm

相關文章
相關標籤/搜索