Heim >php教程 >php手册 >php获取中文字符拼音首字母实例

php获取中文字符拼音首字母实例

WBOY
WBOYOriginal
2016-05-25 16:44:241235Durchsuche

在php中如果我们要获取汉字的拼音第一个字母我们先要了解asc码的范围码了,我们只要知道这个值上下限就可以使用php中的ord来获取我相关的汉字拼音了.

实例1,代码如下:

function getFirstCharter($str) { 
    if (emptyempty($str)) {return '';} 
    $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("程序员3aj.cn"); // 结果将输出:C

实例二,代码如下:

<?php 
 
$limit=array( //gb2312 拼音排序 
    array(45217,45252), //A 
    array(45253,45760), //B 
    array(45761,46317), //C 
    array(46318,46825), //D 
    array(46826,47009), //E 
    array(47010,47296), //F 
    array(47297,47613), //G 
    array(47614,48118), //H 
    array(0,0),         //I 
    array(48119,49061), //J 
    array(49062,49323), //K 
    array(49324,49895), //L 
    array(49896,50370), //M 
    array(50371,50613), //N 
    array(50614,50621), //O 
    array(50622,50905), //P 
    array(50906,51386), //Q 
    array(51387,51445), //R 
    array(51446,52217), //S 
    array(52218,52697), //T 
    array(0,0),         //U 
    array(0,0),         //V 
    array(52698,52979), //W 
    array(52980,53688), //X 
    array(53689,54480), //Y 
    array(54481,55289), //Z 
); 
 
$str="A:这是一个测试程序1"; 
$str= iconv("UTF-8","gb2312", $str); 
echo $str."</br>"; 
$i=0; 
while($i<strlen($str) ) { 
    $tmp=bin2hex(substr($str,$i,1)); 
    if($tmp>=&#39;B0&#39;){ //汉字的开始 
        $t=getLetter(hexdec(bin2hex(substr($str,$i,2)))); 
        printf("%c",$t==-1 ? &#39;*&#39; : $t ); 
        $i+=2; 
    } 
    else{ 
        printf("%s",substr($str,$i,1)); 
        $i++; 
    } 
} 
 
function getLetter($num){ 
    global $limit; 
    $char_index=65; 
    foreach($limit as $k=>$v){ 
        if($num>=$v[0] && $num<=$v[1]){ 
            $char_index+=$k; 
            return $char_index; 
        } 
    } 
    return -1; 
}


教程网址:

欢迎收藏∩_∩但请保留本文链接。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn