本文章分享一篇关于php汉字转换拼音实现程序,有需要的同学可以参考一下下哈。
$_TDataValue = explode('|', $_DataValue);
$_Data = array_combine($_TDataKey, $_TDataValue);
arsort($_Data);
reset($_Data);
if($_Code!= 'gb2312') $_String = _U2_Utf8_Gb($_String);
$_Res = '';
for($i=0; $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-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);
}
//测试
代码如下 | 复制代码 |
include("inc/db/database.php"); $db = new db(); //第二个参数"1"可随意设置即为utf8编码 $query =$db->query("select * from o_art_type "); $fetch = $db->fetch($query,0); //print_r($fetch); foreach( $fetch as $v=> $vv ) { //print_r( $vv['id'] ); //echo $vv['typename']; $s = Pinyin($vv['typename'],'gb2312'); $db->query("update o_art_type set urlname='$s' where id=".$vv['id']); } ?> |