在一些生产环境中要使用到中文拼音排序,比如通讯录排序等…
业务逻辑:
1. 获取 中文首字母
2. 字母排序
一、 普通的中文转拼音代码如下
if (preg_match("/[\x7f-\xff]/", "中文")) { //判断字符串中是否有中文
//此处校验中文是因为getFirstCharter() 识别非中文报错
$letter_name = getFirstCharter("中文");
}
缺点: 仅能识别一些常用的中文
二、 使用到了overtrue/pinyin
拓展
-
转化方式
``` PINYIN_TONE #带音调的转化方式 PINYIN_KEEP_NUMBER #保留数字的转化方式 PINYIN_KEEP_ENGLISH#保留英文的转化方式 PINYIN_KEEP_PUNCTUATION#保留标点的转化方式 PINYIN_UMLAUT_V#使用 v 代替 yu的转化方式 ```
-
汉字转成拼音数组
优点:可识别度更广更全``` $pinyin = new Pinyin(); $pinyin->convert('汉字转拼音', PINYIN_TONE); //[ 'hàn', 'zì', 'zhuǎn', 'pīn', 'yīn'] $pinyin->permalink('汉字转拼音'); //ce-shi-han-zi-zhuan-pin-yin $pinyin->abbr('汉字转拼音', '-'); //h-z-z-p-y $pinyin->sentence('汉字转拼音,这是测试!!!'); //han zi zhuan pin yin, zhe shi ce shi!!!= ```
-
strtoupper() 字母转大写
-
array_multisort($list, SORT_ASC, $list); //重新排序