从dedecms上拿下来的汉字转拼音函数

浏览:4301 发布日期:2013/04/02 分类:功能实现
能实现常用汉字的转换,生僻汉字会被替换成下划线_
需要一个拼音库,跟脚本放在同一目录下,在附件里。
<?php
//示例
echo GetPinyin("魍魉");

/**
 * 汉字转拼音
 * @param string $str 待转换的字符串
 * @param string $charset 字符串编码
 * @param bool $ishead 是否只提取首字母
 * @return string 返回结果
 */
function GetPinyin($str,$charset="utf-8",$ishead = 0) {
    $restr = '';
    $str = trim($str);
    if($charset=="utf-8"){
        $str=iconv("utf-8","gb2312",$str);
    }
    $slen = strlen($str);
    $pinyins=array();
    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 (preg_match("/[a-z0-9]/i", $str[$i])) {
            $restr .= $str[$i];
        } else {
            $restr .= "_";
        }
    }
    return $restr;
}

附件 pinyin.zip ( 19.67 KB 下载:602 次 )

评论( 相关
后面还有条评论,点击查看>>