1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php获取中文拼音(含生僻字 多音字 音标)支持首字母 全拼

php获取中文拼音(含生僻字 多音字 音标)支持首字母 全拼

时间:2021-01-04 23:54:17

相关推荐

php获取中文拼音(含生僻字 多音字 音标)支持首字母 全拼

前面文章有提到php获取中文拼音的解决方案,文章链接如下

该方法的优势在于速度够快,不依赖于任何第三方库。但不支持多音字以及音标的获取,现在将借助第三方库解决这个问题

上一篇地址

php获取中文拼音(含生僻字)支持首字母,全拼

引入第三方库

本文范例采用 composer

composer require "overtrue/pinyin:~3.0"

你也可以直接下载

下载 php pinyin

引入(根据资源获取路径选择)

composer 方式

use Overtrue\Pinyin\Pinyin;

require_once 方式

require_once 'PinYin/PinYin.class.php';

核心代码(composer 方式)

/*** 中文转拼音-支持多音字-音标* @param string $str utf8字符串* @param string $ret_format 返回格式 [all:全拼音|first:首字母]* @param string $space 字符间隔* @param string $tone 是否获取音标* @return string 拼音字符串*/function pinyinMultitone($str, $ret_format = 'all', $space = " ",$tone = false){//不提前载入,字典文件在使用时已文件流形式打开并逐行遍历,运用 yield 特性分配内存,对于内存的消耗非常微小,但转换较慢//$pinyin = new Pinyin('Overtrue\Pinyin\GeneratorFileDictLoader');//将字典预先载入内存-优点是比较快-适用于内存相对充足的服务器$pinyin = new Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');//以上两种二选一if($tone == true){$pinyin = $pinyin->convert($str,PINYIN_UNICODE);}else{$pinyin = $pinyin->convert($str);}$rs = "";foreach($pinyin as $value){if($ret_format == "first"){$chr = mb_substr($value, 0, 1);$rs.=$chr.$space;}else{$rs .= $value.$space;}}return rtrim($rs, ' ');}

核心代码(require_once 方式)

require_once 'PinYin/PinYin.class.php';echo join(' ', PinYin::toPinyin('带着希望旅行,')); # dai zhuo xi wang lv xing ,echo PHP_EOL;echo join(' ', PinYin::toPinyin('重庆', true)); # chóng qìng

在线演示工具网址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。