chineseboost / php-pinyin
Pinyin and hanzi tools in pure PHP | 纯PHP的汉语拼音和汉字工具
Requires
- php: >=7.1
- ext-intl: *
- ext-mbstring: *
Requires (Dev)
- ext-zlib: *
- friendsofphp/php-cs-fixer: ^2.16
- johnkary/phpunit-speedtrap: @stable
- php-coveralls/php-coveralls: ^2.0
- phpmd/phpmd: @stable
- phpunit/phpunit: ^6 || ^7 || ^8
- squizlabs/php_codesniffer: @stable
This package is auto-updated.
Last update: 2024-10-29 06:11:44 UTC
README
Pinyin and hanzi tools in pure PHP | 纯PHP的汉语拼音和汉字工具
You can try a web version of this here: https://www.chineseboost.com/tools/hanzi-pinyin-conversion
Usage
Install via composer:
composer require chineseboost/php-pinyin
Converting hanzi into pinyin
You can convert hanzi strings into pinyin with a furthest-forward matching strategy.
php-pinyin handles a lot of cases that other pinyin generation tools do not, including many 多音字, 儿化 and common mis-parsings.
<?php use Pinyin\Hanzi\HanziSentence; (new HanziSentence('科学家的工作就是对理论加以检验。'))->asPinyin()->toneMarked(); // "Kēxuéjiā de gōngzuò jiùshì duì lǐlùn jiāyǐ jiǎnyàn." (new HanziSentence('他下了车,扑哧扑哧地穿过泥地去开门。'))->asPinyin()->toneMarked(); // "Tā xià le chē, pū chī pū chī de chuānguò ní dì qù kāimén." (new HanziSentence('我兒子真的是一點兒生活常識都沒有!'))->asPinyin()->toneMarked(); // "Wǒ érzi zhēn de shì yīdiǎnr shēnghuó chángshí dōu méiyǒu!" (new HanziSentence('食品供给'))->asPinyin()->toneMarked(); // "Shípǐn gōngjǐ" (new HanziSentence('政府将在2015年对旅游行业加以规范。'))->asPinyin()->toneMarked(); // "Zhèngfǔ jiāng zài èr líng yī wǔ nián duì lǚyóu hángyè jiāyǐ guīfàn." (new HanziSentence('我已经累得不得了了。'))->asPinyin()->toneMarked(); // "Wǒ yǐjīng lèi de bùdéliǎo le."
Working with pinyin
You can also work directly with pinyin strings, for example to convert from tone numbers to tone marks.
It does not matter if the source string has a mix of tone numbers and tone marks, so this can also be used to normalise a pinyin string.
<?php use Pinyin\PinyinSentence; $sentence = new PinyinSentence('Ta1 zen3me hai2 mei2 xia4lai2 ne?'); $sentence->toneMarked(); // "Tā zěnme hái méi xiàlái ne?" $sentence = new PinyinSentence( 'Cong2 bāshi2 lóu ke3yǐ kan4 dào zheng3gè cheng2shì, zan2men0 shang4qù kan4 yīxia4 ba5.' ); $sentence->toneMarked(); // "Cóng bāshí lóu kěyǐ kàn dào zhěnggè chéngshì, zánmen shàngqù kàn yīxià ba."