获取汉语字符串拼音头字母

这个是从C# 转 PHP 的

比网上那些好用多了!生僻字可以自己添加进去!半原创

 

<?php
/*
常用方法
author:FBX
date:2011-12-19
*/
class MyCommon{
 /*获取汉语字符串拼音头字母*/
 public static function pinYinFirstLetter($str){
  $str = iconv("utf-8","gb2312",$str);
  $charset = "gb2312";
  $result = "";
        for($i=0;$i<mb_strlen($str,$charset);$i++)
  {
   $c = mb_substr($str, $i, 1,$charset);
   $asc = ord($c);
   if($asc<160){ //非中文字符
    $result.= $c;
   }
   else
   {
    $result .= self::getPYChar($c);
   }
  }

  return $result;
 }
 public static function getPYChar($string)
    {
   $hex="";  
         for  ($i=0;$i<strlen($string);$i++){
    $hex.=dechex(ord($string[$i]));
   }
   echo $dex;
            $i = hexdec(strtoupper($hex));
            if ($i == 58557) return "H";//浣字的首字母
            if ($i == 63182) return "X";//鑫字首字母
            if ($i == 60105) return "S";//晟字首字母
            if ($i == 59627) return "H";//桦字首字母
            if ($i == 57800) return "J";//崛字首字母
            if ($i == 36987) return "H";//恵字首字母
            if ($i < 45217) return "0";
            if ($i < 45253) return "A";
            if ($i < 45761) return "B";
            if ($i < 46381) return "C";
            if ($i < 46826) return "D";
            if ($i < 47010) return "E";
            if ($i < 47297) return "F";
            if ($i < 47614) return "G";
            if ($i < 48119) return "H";
            if ($i < 49062) return "J";
            if ($i < 49324) return "K";
            if ($i < 49896) return "L";
            if ($i < 50371) return "M";
            if ($i < 50614) return "N";
            if ($i < 50622) return "O";
            if ($i < 50906) return "P";
            if ($i < 51387) return "Q";
            if ($i < 51446) return "R";
            if ($i < 52218) return "S";
            if ($i < 52698) return "T";
            if ($i < 52980) return "W";
            if ($i < 53689) return "X";
            if ($i < 54481) return "Y";
            if ($i < 55290) return "Z";

            return "0";
    }
}
?>

posted on 2011-12-19 21:56  Nick-fbx  阅读(406)  评论(0编辑  收藏  举报

导航