//获取一串中文字符的拼音

php函数

2008-12-16 01:16

//-------------------------------
//获取一串中文字符的拼音
//ishead=0 时,输出全拼音
//ishead=1时,输出拼音首字母
//本拼音数据库是标准的GB2312数据库,仅支持gb2312字符集
//----------------------------------
function GetPinyin($str,$ishead=0,$isclose=0)
{
global $pinyins;
$restr = "";
$str = trim($str);
$slen = strlen($str);
if($slen <2) return $str;
if(count($pinyins)==0){
$fp = fopen(dirname(__FILE__)."/data/pinyin.db","r");
while(!feof($fp)){
$line = trim(fgets($fp));
$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);
}
fclose($fp);
}
for($i=0;$i <$slen;$i++){
if(ord($str[$i])>0x80){
$c = $str[$i].$str[$i+1];
$i++;
if(isset($pinyins[$c])){
if($ishead==0) $restr .= $pinyins[$c];
else $restr .= $pinyins[$c][0];
}
else $restr .= "_";
}
else if( eregi("[a-z0-9]",$str[$i]) )
{ $restr .= $str[$i]; }
else
{ $restr .= "_"; }
}
if($isclose==0) unset($pinyins);
return $restr;
}