这个是从C# 转 PHP 的
比网上那些好用多了!生僻字可以自己添加进去!半原创
<?php
/*常用方法author:FBXdate: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";
}}?>