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

本文介绍了如何利用第三方库overtrue/pinyin在PHP中实现中文到拼音的转换,包括多音字和音标的处理。通过Composer安装库后,展示了一段示例代码,演示了如何获取全拼和首字母,并提供了在线演示工具的链接。
摘要由CSDN通过智能技术生成

前面文章有提到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 

在线演示工具网址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯伪猿

觉得文章不错?打赏支持一下吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值