Parfois, au cours du processus de développement de notre projet, nous devons trier un certain ensemble de données selon le chinois. Cela nous oblige à d'abord obtenir les premières lettres de ces caractères chinois, puis à les trier. C'est la méthode générale pour résoudre de tels problèmes. dans le futur. L'auteur a déjà rencontré un tel problème. En raison de son expérience relativement limitée à l'époque, j'ai recherché de nombreuses méthodes pour résoudre ce problème, mais aucune ne l'a parfaitement résolu. Finalement, j'ai trouvé cette chaîne de codes sur Internet. J'ai reçu la première lettre, puis En cours de tournage.
Le code est le suivant :
<?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('为'); ?>
Vous pouvez exécuter le test vous-même pour des résultats spécifiques !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!