PHP中文轉拼音擴展


Pinyin

Build Status
Latest Stable Version Total Downloads Latest Unstable Version License
Scrutinizer Code Quality
Code Coverage
FOSSA Status

🇨🇳 基於 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 擴展包實戰教程 - 從入門到發布》

License

FOSSA Status


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM