作者:Sunshine5585 | 来源:互联网 | 2018-03-21 13:08
在php中如果我们要获取汉字的拼音第一个字母我们先要了解asc码的范围码了,我们只要知道这个值上下限就可以使用php中的ord来获取我相关的汉字拼音了.实例1,代码如下:functionnbs...
在php中如果我们要获取汉字的拼音第一个字母我们先要了解asc码的范围码了,我们只要知道这个值上下限就可以使用php中的ord来获取我相关的汉字拼音了.
实例1,代码如下:
function getFirstCharter($str) {
if (emptyempty($str)) {return '';}
$fchar = ord($str{0});
if ($fchar>=ord(&#39;A&#39;) && $fchar<=ord(&#39;z&#39;)) return strtoupper($str{0});
$s1 = iconv(&#39;UTF-8&#39;, &#39;gb2312&#39;, $str);
$s2 = iconv(&#39;gb2312&#39;, &#39;UTF-8&#39;, $s1);
$s = $s2 == $str ? $s1 : $str;
$asc = ord($s{0})*256 + ord($s{1}) - 65536;
if ($asc>=-20319 && $asc<=-20284) return &#39;A&#39;;
if ($asc>=-20283 && $asc<=-19776) return &#39;B&#39;;
if ($asc>=-19775 && $asc<=-19219) return &#39;C&#39;;
if ($asc>=-19218 && $asc<=-18711) return &#39;D&#39;;
if ($asc>=-18710 && $asc<=-18527) return &#39;E&#39;;
if ($asc>=-18526 && $asc<=-18240) return &#39;F&#39;;
if ($asc>=-18239 && $asc<=-17923) return &#39;G&#39;;
if ($asc>=-17922 && $asc<=-17418) return &#39;H&#39;;
if ($asc>=-17417 && $asc<=-16475) return &#39;J&#39;;
if ($asc>=-16474 && $asc<=-16213) return &#39;K&#39;;
if ($asc>=-16212 && $asc<=-15641) return &#39;L&#39;;
if ($asc>=-15640 && $asc<=-15166) return &#39;M&#39;;
if ($asc>=-15165 && $asc<=-14923) return &#39;N&#39;;
if ($asc>=-14922 && $asc<=-14915) return &#39;O&#39;;
if ($asc>=-14914 && $asc<=-14631) return &#39;P&#39;;
if ($asc>=-14630 && $asc<=-14150) return &#39;Q&#39;;
if ($asc>=-14149 && $asc<=-14091) return &#39;R&#39;;
if ($asc>=-14090 && $asc<=-13319) return &#39;S&#39;;
if ($asc>=-13318 && $asc<=-12839) return &#39;T&#39;;
if ($asc>=-12838 && $asc<=-12557) return &#39;W&#39;;
if ($asc>=-12556 && $asc<=-11848) return &#39;X&#39;;
if ($asc>=-11847 && $asc<=-11056) return &#39;Y&#39;;
if ($asc>=-11055 && $asc<=-10247) return &#39;Z&#39;;
return null;
}
例如:echo getFirstCharter("程序员3aj.cn"); // 结果将输出:C
实例二,代码如下:
";
$i=0;
while($i=&#39;B0&#39;){ //汉字的开始
$t=getLetter(hexdec(bin2hex(substr($str,$i,2))));
printf("%c",$t==-1 ? &#39;*&#39; : $t );
$i+=2;
}
else{
printf("%s",substr($str,$i,1));
$i++;
}
}
function getLetter($num){
global $limit;
$char_index=65;
foreach($limit as $k=>$v){
if($num>=$v[0] && $num<=$v[1]){
$char_index+=$k;
return $char_index;
}
}
return -1;
}
教程网址:
欢迎收藏∩_∩但请保留本文链接。