当前位置:Gxlcms > PHP教程 > 汉字转拼音的问题

汉字转拼音的问题

时间:2021-07-01 10:21:17 帮助过:17人阅读

在网上找了这么个类,但是有部分汉字无法转化为拼音。不知道是否与输入法有关系?例如:骐,输出为空。

='5.0') ? array_combine($_TDataKey,  $_TDataValue) : _Array_Combine($_TDataKey, $_TDataValue);         arsort($_Data);         reset($_Data);         if($_Code != 'gb2312') $_String = _U2_Utf8_Gb($_String);         $_Res = '';         for($i=0; $i160) { $_Q = ord(substr($_String, ++$i, 1)); $_P = $_P*256 + $_Q - 65536; }                 $_Res .= _Pinyin($_P, $_Data);         }         return preg_replace("/[^a-z0-9]*/",'', $_Res); } function _Pinyin($_Num, $_Data) {         if    ($_Num>0 && $_Num<160 ) return chr($_Num);         elseif($_Num<-20319 || $_Num>-10247) return  '';         else  {                 foreach($_Data as $k=>$v){ if($v<=$_Num) break; }                 return $k;         } } function _U2_Utf8_Gb($_C) {         $_String = '';         if($_C < 0x80) $_String .= $_C;         elseif($_C < 0x800)         {                 $_String .= chr(0xC0 | $_C>>6);                 $_String .= chr(0x80 | $_C & 0x3F);         }elseif($_C < 0x10000){                 $_String .= chr(0xE0 | $_C>>12);                 $_String .= chr(0x80 | $_C>>6 & 0x3F);                 $_String .= chr(0x80 | $_C & 0x3F);         } elseif($_C < 0x200000) {                 $_String .= chr(0xF0 | $_C>>18);                 $_String .= chr(0x80 | $_C>>12 & 0x3F);                 $_String .= chr(0x80 | $_C>>6 & 0x3F);                 $_String .= chr(0x80 | $_C & 0x3F);         }         return iconv('UTF-8', 'GB2312', $_String); } function _Array_Combine($_Arr1, $_Arr2) {         for($i=0; $i


回复讨论(解决方案)

你这个本身无错,只是支持国标一级字库(覆盖90%)将就点吧

强大的代码,拜模。

这个不好,有一个支持多音字的比这个好。不过这里帖不下。

如果要覆盖更广,有没办法修正代码?

http://bbs.csdn.net/topics/390309441 #4

感谢帮忙!老xu

人气教程排行