昨天研究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 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 -10247)

return ‘’;

else {

foreach ($_Data as $k => $v) {

if ($v > 6);

$_String .= chr(0x80 | $_C & 0x3F);

} elseif ($_C > 12);

$_String .= chr(0x80 | $_C >> 6 & 0x3F);

$_String .= chr(0x80 | $_C & 0x3F);

} elseif ($_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

`

2、调用方法:

看你的php编码是什么的,要是GB2312编码,就使用方法一,如果是UTF-8的就使用方法二

`

//第二个参数留空则为gb2312编码

echo cn2pinyin(‘我要转换’);

//第二个参数随意设置则为utf-8编码

echo cn2pinyin(‘我要转换’,1);

`

源码下载地址:

点击下载: 中文转换为拼音源码.rar