php查询汉字的拼音首字母的函数

function getfirst($str, $charset='utf8'){
         $dict=array(
         'a'=>0xB0C4,
         'b'=>0xB2C0,
         'c'=>0xB4ED,
         'd'=>0xB6E9,
         'e'=>0xB7A1,
         'f'=>0xB8C0,
         'g'=>0xB9FD,
         'h'=>0xBBF6,
         'j'=>0xBFA5,
         'k'=>0xC0AB,
         'l'=>0xC2E7,
         'm'=>0xC4C2,
         'n'=>0xC5B5,
         'o'=>0xC5BD,
         'p'=>0xC6D9,
         'q'=>0xC8BA,
         'r'=>0xC8F5,
         's'=>0xCBF9,
         't'=>0xCDD9,
         'w'=>0xCEF3,
         'x'=>0xD188,
         'y'=>0xD4D0,
         'z'=>0xD7F9,
         );
         if ('utf8' == $charset){
             $str = iconv("UTF-8", "gb2312", $str);
         }
         $str_1 = substr($str, 0, 1);
         //取GB2312字符串首字母,原理是GBK汉字是按拼音顺序编码的.
         if ($str_1>=chr(0x81) && $str_1<=chr(0xfe)){
             $num = hexdec(bin2hex(substr($str, 0, 2)));
             foreach ($dict as $k=>$v){
                 if($v>=$num){
                     break;
                 }
             }
             return $k;
         }else {
             return $str_1;
         }
            
    }
     echo getfirst('中')."
     ";
     echo getfirst('华')."
     ";
     echo getfirst('人')."
     ";
     echo getfirst('民')."
     ";
     echo getfirst('共')."
     ";
     echo getfirst('和')."
     ";
     echo getfirst('国')."
     ";
     echo getfirst('万岁')."
     ";
     echo getfirst('c')."
     ";
     echo getfirst('h')."
     ";
     echo getfirst('i')."
     ";
     echo getfirst('n')."
     ";
     echo getfirst('a')."
     ";

posted @ 2014-05-22 16:39  達達尼亞  阅读(182)  评论(0编辑  收藏  举报