Home > php教程 > php手册 > body text

PHP汉字转换拼音的类

WBOY
Release: 2016-06-21 08:51:21
Original
1486 people have browsed it

 

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

?> 



Related labels:
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template