Home >php教程 >php手册 >PHP汉字转换拼音的类

PHP汉字转换拼音的类

WBOY
WBOYOriginal
2016-06-21 08:51:211520browse

 

网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: 

function Pinyin($_String, $_Code='gb2312')

{

$_DataKey = "aaianangaobabaibanbangbaobeibenbengbibianbiaobiebinbingbobucacaicancangcaocecengcha".

"chaichanchangchaochechenchengchichongchouchuchuaichuanchuangchuichunchuocicongcoucu".

"cuancuicuncuodadaidandangdaodedengdidiandiaodiedingdiudongdoududuanduidunduoeener".

"fafanfangfeifenfengfofoufugagaiganganggaogegeigengenggonggouguguaguaiguanguanggui".

"gunguohahaihanhanghaoheheihenhenghonghouhuhuahuaihuanhuanghuihunhuojijiajianjiang".

"jiaojiejinjingjiongjiujujuanjuejunkakaikankangkaokekenkengkongkoukukuakuaikuankuang".

"kuikunkuolalailanlanglaoleleilenglilialianliangliaolielinlingliulongloululvluanlue".

"lunluomamaimanmangmaomemeimenmengmimianmiaomieminmingmiumomoumunanainannangnaone".

"neinennengninianniangniaonieninningniunongnunvnuannuenuoooupapaipanpangpaopeipen".

"pengpipianpiaopiepinpingpopuqiqiaqianqiangqiaoqieqinqingqiongqiuququanquequnranrang".

"raorerenrengrirongroururuanruirunruosasaisansangsaosesensengshashaishanshangshao".

"sheshenshengshishoushushuashuaishuanshuangshuishunshuosisongsoususuansuisunsuotatai".

"tantangtaotetengtitiantiaotietingtongtoututuantuituntuowawaiwanwangweiwenwengwowu".

"xixiaxianxiangxiaoxiexinxingxiongxiuxuxuanxuexunyayanyangyaoyeyiyinyingyoyongyou".

"yuyuanyueyunzazaizanzangzaozezeizenzengzhazhaizhanzhangzhaozhezhenzhengzhizhong".

"zhouzhuzhuazhuaizhuanzhuangzhuizhunzhuozizongzouzuzuanzuizunzuo";

$_DataValue = "-20319-20317-20304-20295-20292-20283-20265-20257-20242-20230-20051-20036-20032-20026-20002-19990".

"-19986-19982-19976-19805-19784-19775-19774-19763-19756-19751-19746-19741-19739-19728-19725".

"-19715-19540-19531-19525-19515-19500-19484-19479-19467-19289-19288-19281-19275-19270-19263".

"-19261-19249-19243-19242-19238-19235-19227-19224-19218-19212-19038-19023-19018-19006-19003".

"-18996-18977-18961-18952-18783-18774-18773-18763-18756-18741-18735-18731-18722-18710-18697".

"-18696-18526-18518-18501-18490-18478-18463-18448-18447-18446-18239-18237-18231-18220-18211".

"-18201-18184-18183-18181-18012-17997-17988-17970-17964-17961-17950-17947-17931-17928-17922".

"-17759-17752-17733-17730-17721-17703-17701-17697-17692-17683-17676-17496-17487-17482-17468".

"-17454-17433-17427-17417-17202-17185-16983-16970-16942-16915-16733-16708-16706-16689-16664".

"-16657-16647-16474-16470-16465-16459-16452-16448-16433-16429-16427-16423-16419-16412-16407".

"-16403-16401-16393-16220-16216-16212-16205-16202-16187-16180-16171-16169-16158-16155-15959".

"-15958-15944-15933-15920-15915-15903-15889-15878-15707-15701-15681-15667-15661-15659-15652".

"-15640-15631-15625-15454-15448-15436-15435-15419-15416-15408-15394-15385-15377-15375-15369".

"-15363-15362-15183-15180-15165-15158-15153-15150-15149-15144-15143-15141-15140-15139-15128".

"-15121-15119-15117-15110-15109-14941-14937-14933-14930-14929-14928-14926-14922-14921-14914".

"-14908-14902-14894-14889-14882-14873-14871-14857-14678-14674-14670-14668-14663-14654-14645".

"-14630-14594-14429-14407-14399-14384-14379-14368-14355-14353-14345-14170-14159-14151-14149".

"-14145-14140-14137-14135-14125-14123-14122-14112-14109-14099-14097-14094-14092-14090-14087".

"-14083-13917-13914-13910-13907-13906-13905-13896-13894-13878-13870-13859-13847-13831-13658".

"-13611-13601-13406-13404-13400-13398-13395-13391-13387-13383-13367-13359-13356-13343-13340".

"-13329-13326-13318-13147-13138-13120-13107-13096-13095-13091-13076-13068-13063-13060-12888".

"-12875-12871-12860-12858-12852-12849-12838-12831-12829-12812-12802-12607-12597-12594-12585".

"-12556-12359-12346-12320-12300-12120-12099-12089-12074-12067-12058-12039-11867-11861-11847".

"-11831-11798-11781-11604-11589-11536-11358-11340-11339-11324-11303-11097-11077-11067-11055".

"-11052-11045-11041-11038-11024-11020-11019-11018-11014-10838-10832-10815-10800-10790-10780".

"-10764-10587-10544-10533-10519-10331-10329-10328-10322-10315-10309-10307-10296-10281-10274".

"-10270-10262-10260-10256-10254";

$_TDataKey = explode('', $_DataKey);

$_TDataValue = explode('', $_DataValue);

$_Data = (PHP_VERSION>='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

{

$_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

elseif($_Num-10247) return '';

else {

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

return $k;

}

}

function _U2_Utf8_Gb($_C)

{

$_String = '';

if($_C

elseif($_C

{

$_String .= chr(0xC0 $_C>>6);

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

}elseif($_C

$_String .= chr(0xE0 $_C>>12);

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

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

} elseif($_C

$_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

return $_Res;

}

//用法:

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

echo Pinyin('PHP100中文网');

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

echo Pinyin('张恩民',1);

?> 



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn