Heim  >  Artikel  >  php教程  >  PHP汉字转换拼音的类

PHP汉字转换拼音的类

WBOY
WBOYOriginal
2016-06-21 08:51:211451Durchsuche

 

网络上类似的代码大多只能在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);

?> 



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:10个有趣的 PHP 教程Nächster Artikel:教你一个月学会PHP全部函数