php獲取中文字符串的首字符拼音字母

atts 8年前發布 | 757 次閱讀 PHP

$str="這是一個測試程序1";

echo getFirstCharCode($str);

function getFirstCharCode($str){ $str= iconv("UTF-8","gb2312", $str); $targetChar='*'; $i=0;

while($i<strlen($str) ) {
    $tmp=bin2hex(substr($str,$i,1));
    if($tmp>='B0'){ //漢字的開始
        $t=getLetter(hexdec(bin2hex(substr($str,$i,2))));
        $targetChar=$t==-1 ? '*' : $t ;
        //printf("%c",$t==-1 ? '*' : $t );
        break;
        //$i+=2;
    }
    else{
        $targetChar=substr($str,$i,1);
        break;
        //printf("%s",substr($str,$i,1));
        //$i++;
    }

}
if(is_numeric($targetChar)){
    return chr($targetChar);
}
else{
    return  $targetChar;
}

}

function getLetter($num){ $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 ); $char_index=65; foreach($limit as $k=>$v){ if($num>=$v[0] && $num<=$v[1]){ $char_index+=$k; return $char_index; } } return -1; }</pre>

 本文由用戶 atts 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!