wordpress(php)汉字转换成拼音的方法
昨天研究iphoto这个主题,想实现一个功能:根据标题的汉语拼音的首字母顺序排序,网上找到了排序的方法,那是英文的,于是想到汉字转汉语拼音,下面是网上找的资料,能用,我已经测试成功! 代码: 1、汉字转拼音函数: = '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; $i < strlen($_String); $i++) { $_P = ord(substr($_String, $i, 1)); if ($_P > 160) { $_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 < count($_Arr1); $i++) $_Res[$_Arr1[$i]] = $_Arr2[$i]; return $_Res; } ?>
2、调用方法:
看你的php编码是什么的,要是GB2312编码,就使用方法一,如果是UTF-8的就使用方法二 //第二个参数留空则为gb2312编码 echo cn2pinyin('我要转换'); //第二个参数随意设置则为utf-8编码 echo cn2pinyin('我要转换',1);
源码下载地址: 点击下载: 中文转换为拼音源码.rar