获取汉语字符串拼音头字母
这个是从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";
}
}
?>