Maison  >  Article  >  développement back-end  >  Conseils de développement PHP (7) - Exemple de code pour obtenir la première lettre du pinyin des caractères chinois

Conseils de développement PHP (7) - Exemple de code pour obtenir la première lettre du pinyin des caractères chinois

黄舟
黄舟original
2017-03-10 18:49:001540parcourir

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 &#39;&#39;;  
    }  
    $fchar = ord($str{0});  
    if ($fchar >= ord(&#39;A&#39;) && $fchar <= ord(&#39;z&#39;)) return strtoupper($str{0});  
    $s1 = iconv(&#39;UTF-8&#39;, &#39;gb2312&#39;, $str);  
    $s2 = iconv(&#39;gb2312&#39;, &#39;UTF-8&#39;, $s1);  
    $s = $s2 == $str ? $s1 : $str;  
    $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;  
    if ($asc >= -20319 && $asc <= -20284) return &#39;A&#39;;  
    if ($asc >= -20283 && $asc <= -19776) return &#39;B&#39;;  
    if ($asc >= -19775 && $asc <= -19219) return &#39;C&#39;;  
    if ($asc >= -19218 && $asc <= -18711) return &#39;D&#39;;  
    if ($asc >= -18710 && $asc <= -18527) return &#39;E&#39;;  
    if ($asc >= -18526 && $asc <= -18240) return &#39;F&#39;;  
    if ($asc >= -18239 && $asc <= -17923) return &#39;G&#39;;  
    if ($asc >= -17922 && $asc <= -17418) return &#39;H&#39;;  
    if ($asc >= -17417 && $asc <= -16475) return &#39;J&#39;;  
    if ($asc >= -16474 && $asc <= -16213) return &#39;K&#39;;  
    if ($asc >= -16212 && $asc <= -15641) return &#39;L&#39;;  
    if ($asc >= -15640 && $asc <= -15166) return &#39;M&#39;;  
    if ($asc >= -15165 && $asc <= -14923) return &#39;N&#39;;  
    if ($asc >= -14922 && $asc <= -14915) return &#39;O&#39;;  
    if ($asc >= -14914 && $asc <= -14631) return &#39;P&#39;;  
    if ($asc >= -14630 && $asc <= -14150) return &#39;Q&#39;;  
    if ($asc >= -14149 && $asc <= -14091) return &#39;R&#39;;  
    if ($asc >= -14090 && $asc <= -13319) return &#39;S&#39;;  
    if ($asc >= -13318 && $asc <= -12839) return &#39;T&#39;;  
    if ($asc >= -12838 && $asc <= -12557) return &#39;W&#39;;  
    if ($asc >= -12556 && $asc <= -11848) return &#39;X&#39;;  
    if ($asc >= -11847 && $asc <= -11056) return &#39;Y&#39;;  
    if ($asc >= -11055 && $asc <= -10247) return &#39;Z&#39;;  
    return null;  
}  
  
echo getFirstCharter(&#39;为&#39;);  
  
?>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn