获取字符串汉字首字母,兼容GBK和UTF-8

<?php
function  getfirstchar( $s0 ){    //获取单个汉字拼音首字母。注意:此处不要纠结。汉字拼音是没有以U和V开头的
     $fchar  = ord( $s0 {0});
     if ( $fchar  >= ord( "A" and  $fchar  <= ord( "z" ) ) return  strtoupper ( $s0 {0});
     $s1  = iconv( "UTF-8" , "gb2312" $s0 );
     $s2  = iconv( "gb2312" , "UTF-8" $s1 );
     if ( $s2  ==  $s0 ){ $s  $s1 ;} else { $s  $s0 ;}
     $asc  = ord( $s {0}) * 256 + ord( $s {1}) - 65536;
     if ( $asc  >= -20319  and  $asc  <= -20284)  return  "A" ;
     if ( $asc  >= -20283  and  $asc  <= -19776)  return  "B" ;
     if ( $asc  >= -19775  and  $asc  <= -19219)  return  "C" ;
     if ( $asc  >= -19218  and  $asc  <= -18711)  return  "D" ;
     if ( $asc  >= -18710  and  $asc  <= -18527)  return  "E" ;
     if ( $asc  >= -18526  and  $asc  <= -18240)  return  "F" ;
     if ( $asc  >= -18239  and  $asc  <= -17923)  return  "G" ;
     if ( $asc  >= -17922  and  $asc  <= -17418)  return  "H" ;
     if ( $asc  >= -17922  and  $asc  <= -17418)  return  "I" ;
     if ( $asc  >= -17417  and  $asc  <= -16475)  return  "J" ;
     if ( $asc  >= -16474  and  $asc  <= -16213)  return  "K" ;
     if ( $asc  >= -16212  and  $asc  <= -15641)  return  "L" ;
     if ( $asc  >= -15640  and  $asc  <= -15166)  return  "M" ;
     if ( $asc  >= -15165  and  $asc  <= -14923)  return  "N" ;
     if ( $asc  >= -14922  and  $asc  <= -14915)  return  "O" ;
     if ( $asc  >= -14914  and  $asc  <= -14631)  return  "P" ;
     if ( $asc  >= -14630  and  $asc  <= -14150)  return  "Q" ;
     if ( $asc  >= -14149  and  $asc  <= -14091)  return  "R" ;
     if ( $asc  >= -14090  and  $asc  <= -13319)  return  "S" ;
     if ( $asc  >= -13318  and  $asc  <= -12839)  return  "T" ;
     if ( $asc  >= -12838  and  $asc  <= -12557)  return  "W" ;
     if ( $asc  >= -12556  and  $asc  <= -11848)  return  "X" ;
     if ( $asc  >= -11847  and  $asc  <= -11056)  return  "Y" ;
     if ( $asc  >= -11055  and  $asc  <= -10247)  return  "Z" ;
     return  NULL;
     //return $s0;
}
function  pinyin_long( $zh ){   //获取整条字符串汉字拼音首字母
     $ret  "" ;
     $s1  = iconv( "UTF-8" , "gb2312" $zh );
     $s2  = iconv( "gb2312" , "UTF-8" $s1 );
     if ( $s2  ==  $zh ){ $zh  $s1 ;}
     for ( $i  = 0;  $i  strlen ( $zh );  $i ++){
         $s1  substr ( $zh , $i ,1);
         $p  = ord( $s1 );
         if ( $p  > 160){
             $s2  substr ( $zh , $i ++,2);
             $ret  .= getfirstchar( $s2 );
         } else {
             $ret  .=  $s1 ;
         }
     }
     return  $ret ;
}
echo  pinyin_long( '*《,@#$123HAHadf一年后' );
?>

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值