thinkphp5整合系列之汉字转拼音完美支持多音字
1.进入thinkphp5项目的根目录,用composer 安装扩展2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/pinyin/src/Pinyin.php 文件里面的Pinyn这个类
项目需求,需要将汉字转换为拼音,然后按拼音排序.网上找了许多的解决方案,但并不能很好地支持多音字,例如重庆转换之后变成的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('带着希望去旅行,比到达终点更美好');
dump($str);
echo '2.带着希望去旅行,比到达终点更美好';
echo '带声调转化:带着希望去旅行,比到达终点更美好';
$str = $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_TONE);
dump($str);
echo '3.带着希望去旅行,比到达终点更美好';
$str = $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII_TONE);
dump($str);
echo '<br/>';
echo '<span style="font-weight: bold;">二、生成用于链接的拼音字符串</span>';
echo '<br/>';
echo '1.带着希望去旅行';
$str = $pinyin->permalink('带着希望去旅行');
dump($str);
echo '2.带着希望去旅行';
$str = $pinyin->permalink('带着希望去旅行', '.');
dump($str);
echo '<br/>';
echo '<span style="font-weight: bold;">三、获取首字符字符串</span>';
echo '<br/>';
echo '1.带着希望去旅行';
$str = $pinyin->abbr('带着希望去旅行');
dump($str);
echo '2.带着希望去旅行';
$str = $pinyin->abbr('带着希望去旅行', '-');
dump($str);
echo '3.你好2018!';
$str = $pinyin->abbr('你好2018!', PINYIN_KEEP_NUMBER);
dump($str);
echo '4.Happy New Year! 2018!';
$str = $pinyin->abbr('Happy New Year! 2018!', PINYIN_KEEP_ENGLISH);
dump($str);
echo '<br/>';
echo '<span style="font-weight: bold;">四、翻译整段文字为拼音,将会保留中文字符:,。 ! ? : “ ” ‘ ’ 并替换为对应的英文符号。</span>';
echo '<br/>';
echo '1.带着希望去旅行,比到达终点更美好!';
$str = $pinyin->sentence('带着希望去旅行,比到达终点更美好!');
dump($str);
echo '2.带着希望去旅行,比到达终点更美好!';
$str = $pinyin->sentence('带着希望去旅行,比到达终点更美好!', PINYIN_TONE);
dump($str);
echo '<br/>';
echo '<span style="font-weight: bold;">五、翻译姓名:姓名的姓的读音有些与普通字不一样,比如 ‘单’ 常见的音为 dan,而作为姓的时候读 shan。</span>';
echo '<br/>';
echo '1.单某某';
$str = $pinyin->name('单某某');
dump($str);
echo '2.单某某';
$str = $pinyin->name('单某某', PINYIN_TONE);
dump($str);
}
获取项目实例源码,欢迎访问获 https://github.com/hillwooda/study