龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

把汉字转化为拼音,(最笨也是最准确的办法)

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
在网上找了很多很多把汉字转化为拼音的代码,结果都不是很好使,缺字与错字现象很多,干脆自己搞一个吧,用了一个最笨最笨的办法,建立了一个数组,为每一个汉字设置一个读音
       在网上找了很多很多把汉字转化为拼音的代码,结果都不是很好使,缺字与错字现象很多,干脆自己搞一个吧,用了一个最笨最笨的办法,建立了一个数组,为每一个汉字设置一个读音,找了几万字的小说做试验,应该是没有丢落的了,2013年3月9日有更新,所有GB2312的字符均已经验证过。

     网上很多所谓的汉字转拼音都是根据GB2312编码进行识别的,GB2312编码规则如下:
16-55区为一级汉字,按拼音排序。
56-87区为二级汉字,按部首/笔画排序。
88-94区则未有编码规则。
因此他们的办法识别出的56-94区的汉字识别的读音要么没有,要么是错误的。
(汉字列表来源于http://wenku.baidu.com/view/6487c111f18583d0496459b5.html
此表上的汉字标注不全,有增加部分,感谢此文档作者)


<?php  
/**  
	*  本文作者:chinesehero@163.com
	*  获取一个汉字的拼音  
	*  用法如下:
	*  include('Pinyin.php');
	*  echo getPinyin("你好,吃了吗?");
    */
      
    function  getPinyin($keyWord)  
    {  
		$hz['腌']="yan";
		$hz['嗄']="a";
		$hz['迫']="po";
		$hz['捱']="ai";
		$hz['艾']="ai";
	//此处省略6900余字
		$hz['蜱']="pi";
		$hz['螋']="sou";
		$hz['螗']="tang";
		$hz['螵']="piao";
		$hz['蟛']="peng";

		
		$result="";
		$charArray=str_split_php5_utf8($keyWord);
		foreach($charArray as $char){
		if(!empty($hz[$char])){
			$result= $result.$hz[$char];
		}
		else
		{
			$result= $result.$char;
		}
		}
		return $result;
	}
	
	function str_split_php5_utf8($str) { 
    // place each character of the string into and array 
    $split=1; 
    $array = array(); 
    for ( $i=0; $i < strlen( $str ); ){ 
        $value = ord($str[$i]); 
        if($value > 127){ 
            if($value >= 192 && $value <= 223) 
                $split=2; 
            elseif($value >= 224 && $value <= 239) 
                $split=3; 
            elseif($value >= 240 && $value <= 247) 
                $split=4; 
        }else{ 
            $split=1; 
        } 
            $key = NULL; 
        for ( $j = 0; $j < $split; $j++, $i++ ) { 
            $key .= $str[$i]; 
        } 
        array_push( $array, $key ); 
    } 
    return $array; 
	}
   
?>
精彩图集

赞助商链接