本文实例讲述了PHP实现将汉字转换为拼音及获取词语首字母的方法。分享给大家供大家参考,具体如下:
最近要开发将汉字转换为拼音和得到首字的功能记录下来哈子:呵呵~
= '5.0') ? array_combine ( $_TDataKey,$_TDataValue ) : $this->_Array_Combine( $_TDataKey,$_TDataValue );
arsort ( $data );
reset ( $data );
$str = $this->safe_encoding ( $str );
$_Res = '';
for($i = 0; $i < strlen ( $str ); $i ++) {
$_P = ord ( substr ( $str,$i,1 ) );
if ($_P > 160) {
$_Q = ord ( substr ( $str,++ $i,1 ) );
$_P = $_P * 256 + $_Q - 65536;
}
$_Res .= $this->_Pinyin ( $_P,$data ).$pix;
}
return preg_replace ( "/[^a-z0-9".$pix."]*/",'',$_Res );
}
private function _Pinyin($_Num,$_Data) {
if ($_Num > 0 && $_Num < 160)
return chr ( $_Num );
elseif ($_Num < - 20319 || $_Num > - 10247)
return '';
else {
foreach ( $_Data as $k => $v ) {
if ($v <= $_Num)
break;
}
return $k;
}
}
public function getFirstChar($str=''){
if( !$str ) return null;
$fchar=ord($str{0});
if($fchar>=ord("A") and $fchar<=ord("z") )return strtoupper($str{0});
$s= $this->safe_encoding($str);
$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>=-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;
}
function safe_encoding($string) {
$encoding="UTF-8";
for($i=0;$i_outEncoding))
return $string;
else
return iconv($encoding,$this->_outEncoding,$string);
}
private function _Array_Combine($_Arr1,$_Arr2){
for($i = 0; $i < count ( $_Arr1 ); $i ++)
$_Res [$_Arr1 [$i]] = $_Arr2 [$i];
return $_Res;
}
}
测试代码如下:
getFirstChar("湖北武汉")."
"; echo $pinyin->getPinyin("北上广")."
"; echo $pinyin->getPinyin("火影")."
"; echo $pinyin->getFirstChar("获得")."
"; echo $pinyin->getFirstChar("TOM")."
";
"; echo $pinyin->getPinyin("北上广")."
"; echo $pinyin->getPinyin("火影")."
"; echo $pinyin->getFirstChar("获得")."
"; echo $pinyin->getFirstChar("TOM")."
";
运行结果:
PS:这里再为大家提供几款本站拼音与字母相关工具供大家参考:
在线汉字转换成拼音工具:
中文
汉字转拼音工具:
在线字母大小写转换工具:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/16915.html