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

本文详细解析了使用UTF-8到GB2312转码及提取GB2312字符串首字母的方法,通过实例展示了如何在特定字符集转换背景下获取汉字的拼音首字母。

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')."
     ";

转载于:https://www.cnblogs.com/wayne173/p/3745957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值