php 汉字转拼音

php函数

2010-12-28 09:21

<?

function SpGetPinyin($str,$ishead=0) 
{
 $restr = '';
 $str = trim($str);
 $slen = strlen($str);
 if($slen<2)
 {
  return $str;
 }
 
  $fp = fopen('./pinyin.dat','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 .= "_";
  }
 }
 
 return $restr;
}

echo SpGetPinyin("张曼玉");     // zhangmanyu
echo SpGetPinyin("张曼玉",1);  //zmy

来源于 dedecms \include\inc\inc_fun_funAdmin.php