Sometimes during our project development process, we need to sort a certain set of data according to Chinese. This requires us to first obtain the first letters of these Chinese characters and then sort them. This is the general method for solving such problems in the future. method. The author once encountered such a problem. Due to relatively little experience at the time, I searched for many methods to solve this problem, but none of them solved it perfectly. Finally, I found this string of codes on the Internet. First, I got the first letter, and then In the process of filming.
The code is as follows:
<?php /** * ======================================= * Created by Zhihua_W. * Author: Zhihua_W * Date: 2016/12/6 0007 * Time: 上午 8:46 * Project: PHP开发小技巧 * Power: 获取中文字符拼音首字母 * ======================================= */ /** * 获取中文字符拼音首字母 * @param $str 中文字符 * @return null|string */ function getFirstCharter($str) { if (empty($str)) { return ''; } $fchar = ord($str{0}); if ($fchar >= ord('A') && $fchar <= ord('z')) return strtoupper($str{0}); $s1 = iconv('UTF-8', 'gb2312', $str); $s2 = iconv('gb2312', 'UTF-8', $s1); $s = $s2 == $str ? $s1 : $str; $asc = ord($s{0}) * 256 + ord($s{1}) - 65536; if ($asc >= -20319 && $asc <= -20284) return 'A'; if ($asc >= -20283 && $asc <= -19776) return 'B'; if ($asc >= -19775 && $asc <= -19219) return 'C'; if ($asc >= -19218 && $asc <= -18711) return 'D'; if ($asc >= -18710 && $asc <= -18527) return 'E'; if ($asc >= -18526 && $asc <= -18240) return 'F'; if ($asc >= -18239 && $asc <= -17923) return 'G'; if ($asc >= -17922 && $asc <= -17418) return 'H'; if ($asc >= -17417 && $asc <= -16475) return 'J'; if ($asc >= -16474 && $asc <= -16213) return 'K'; if ($asc >= -16212 && $asc <= -15641) return 'L'; if ($asc >= -15640 && $asc <= -15166) return 'M'; if ($asc >= -15165 && $asc <= -14923) return 'N'; if ($asc >= -14922 && $asc <= -14915) return 'O'; if ($asc >= -14914 && $asc <= -14631) return 'P'; if ($asc >= -14630 && $asc <= -14150) return 'Q'; if ($asc >= -14149 && $asc <= -14091) return 'R'; if ($asc >= -14090 && $asc <= -13319) return 'S'; if ($asc >= -13318 && $asc <= -12839) return 'T'; if ($asc >= -12838 && $asc <= -12557) return 'W'; if ($asc >= -12556 && $asc <= -11848) return 'X'; if ($asc >= -11847 && $asc <= -11056) return 'Y'; if ($asc >= -11055 && $asc <= -10247) return 'Z'; return null; } echo getFirstCharter('为'); ?>
For specific results, you can run the test yourself!
The above is the detailed content of PHP Development Tips (7) - Code Example for Obtaining the First Letter of Pinyin of Chinese Characters. For more information, please follow other related articles on the PHP Chinese website!