thinkphp5整合系列之汉字转拼音完美支持多音字


项目需求,需要将汉字转换为拼音,然后按拼音排序.网上找了许多的解决方案,但并不能很好地支持多音字,例如重庆转换之后变成的zhong qing,导致排序异常.
后来费了一番功夫终于在github( https://github.com/overtrue/pinyin)上面找到了完美的解决方案,下面记录一下这次的解决过程!

1.进入thinkphp5项目的根目录,用composer 安装扩展

$ composer require "overtrue/pinyin:~4.0"

安装完毕之后,可以看到verdor目录下面多了一个overtrue目录,目录里面的文件就是我们所需的扩展.

2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/pinyin/src/Pinyin.php 文件里面的Pinyn这个类

public function pinyin()
    {
        vendor('overtrue.pinyin.src.Pinyin');
        $pinyin = new \Overtrue\Pinyin\Pinyin();

        echo '<br/>';
        echo '<span style="font-weight: bold;">一、拼音数组</span>';
        echo '<br/>';
        echo '1.带着希望去旅行,比到达终点更美好';
        $str = $pinyin->convert('带着希望去旅行,比到达终点更美好');// ["dai", "zhe", "xi", "wang", "qu", "lyu", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"]
        dump($str);
        echo '2.带着希望去旅行,比到达终点更美好';
        echo '带声调转化:带着希望去旅行,比到达终点更美好';
        $str = $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"]
        dump($str);
        echo '3.带着希望去旅行,比到达终点更美好';
        $str = $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII_TONE);//["dai4","zhe","xi1","wang4","qu4","lyu3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"]
        dump($str);

        echo '<br/>';
        echo '<span style="font-weight: bold;">二、生成用于链接的拼音字符串</span>';
        echo '<br/>';
        echo '1.带着希望去旅行';
        $str = $pinyin->permalink('带着希望去旅行'); // dai-zhe-xi-wang-qu-lyu-xing
        dump($str);
        echo '2.带着希望去旅行';
        $str = $pinyin->permalink('带着希望去旅行', '.'); // dai.zhe.xi.wang.qu.lyu.xing
        dump($str);

        echo '<br/>';
        echo '<span style="font-weight: bold;">三、获取首字符字符串</span>';
        echo '<br/>';
        echo '1.带着希望去旅行';
        $str = $pinyin->abbr('带着希望去旅行'); // dzxwqlx
        dump($str);
        echo '2.带着希望去旅行';
        $str = $pinyin->abbr('带着希望去旅行', '-'); // d-z-x-w-q-l-x
        dump($str);
        echo '3.你好2018!';
        $str = $pinyin->abbr('你好2018!', PINYIN_KEEP_NUMBER); // nh2018
        dump($str);
        echo '4.Happy New Year! 2018!';
        $str = $pinyin->abbr('Happy New Year! 2018!', PINYIN_KEEP_ENGLISH); // HNY2018
        dump($str);

        echo '<br/>';
        echo '<span style="font-weight: bold;">四、翻译整段文字为拼音,将会保留中文字符:,。 ! ? : “ ” ‘ ’ 并替换为对应的英文符号。</span>';
        echo '<br/>';
        echo '1.带着希望去旅行,比到达终点更美好!';
        $str = $pinyin->sentence('带着希望去旅行,比到达终点更美好!');// dai zhe xi wang qu lyu xing, bi dao da zhong dian geng mei hao!
        dump($str);
        echo '2.带着希望去旅行,比到达终点更美好!';
        $str = $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!
        dump($str);

        echo '<br/>';
        echo '<span style="font-weight: bold;">五、翻译姓名:姓名的姓的读音有些与普通字不一样,比如 ‘单’ 常见的音为 dan,而作为姓的时候读 shan。</span>';
        echo '<br/>';
        echo '1.单某某';
        $str = $pinyin->name('单某某'); // ['shan', 'mou', 'mou']
        dump($str);
        echo '2.单某某';
        $str = $pinyin->name('单某某', PINYIN_TONE); // ["shàn","mǒu","mǒu"]
        dump($str);
    }

获取项目实例源码,欢迎访问获 https://github.com/hillwooda/study

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值