PHP将汉字转为拼音

没什么难度,最大的难点应该是需要有一个汉字-拼音库。

 

<?php
function spell($str, $ishead=0){
    $restr = '';
    $str = trim($str);
    $slen = strlen($str);
    if($slen < 2){//若长度小于2则不是汉字
        return $str;
    }
    /*
    .dat文件内格式为
    啊`a
    阿`a
    埃`ai
    */
    $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( preg_match("/[a-z0-9]/i", $str[$i]) ){
            $restr .= $str[$i];
        }else{
           $restr .= "_";
        }
    }
    return $restr;
}
?>

附汉字-拼音库下载 

 

posted @ 2018-08-17 17:13  寻觅~~  阅读(526)  评论(0编辑  收藏  举报