中国語の文字をピンインに変換するための PHP クラス

WBOY
リリース: 2016-06-21 08:51:21
オリジナル
1484 人が閲覧しました

インターネット上の類似のコードのほとんどは、gb2312 エンコーディングでのみ使用できます。次のクラスは、utf-8 エンコーディングで中国語の文字をピンインに変換することもできます。具体的なコードと使用法は次のとおりです。

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

{

$_DataKey = "アイアナンガオババイバンバンバオベイベンベンビビアンビアオビビンビンボブカカイカンカンカオセチェンチャ".

「チャイチャンチャンチャオチェチェンチェンチチョンチョチュチュアイチュアンチュアンチュチュチュンチュオシコンクーク」。

「クアンクイクンクオダダイダンダンダオデデンディディアンディアオディディンディウドンドゥドゥドゥアンドゥドゥドゥウンドゥエナー」。

「ファファンファンフェイフェンフェンフォフォウフガガイガンガンガオゲゲゲイゲン​​ゲンゲンゴンググググアグアイグアングアングイ」

「グングオハハイハンハンハオヘヘイヘンヘンホンホウフフアイフアンフアンフイフンフオジジャジャンジャン」。

「jiaojiejinjingjiongjiujujuanjuejunkakaikankangkaokekenkengkongkoukukuakuaikuankuang」。

「クイクンクオラライランラングラオレレーイレンリリアリアンリアオリエリンリンリウロンルルルルアンルー」。

「ルンルオマイマンマンマオメメイメンメンミミアンミアオミエミンミンミウモウムナナイナンナンナオネ」

「ねねんねんににゃんにゃんにゃおにんにんにんにんにんにんにんにゃんにゃおにんにんにんにんにんにんにぁんにんにんにんにんにんにぁんにんにゅんぬんぬぁんぬおおおぱぱぱぱいぱんぱおぺいぺん」。

"pengpipianpiaopiepinpingpopuqiqiaqianqiaoqieqinqingqiongqiuququanquequnranrang".

「ラオレレンレングリロングロウルルアンルイルンルオササイサンサンサオセセンセンシャシャイシャンシャンシャオ」

「シェシェンシェンシショウシュシュアシュアイシュアンシュアンシュイシュンシュオソンソウスアンスイサンスオタタイ」

「タンタンタオテテンティアンティアオティティントントゥトゥトゥアントゥイトゥントゥワワイワンワンウェイウェンウェンウォウ」。

「xixiaxianxiangxiaoxiexinxingxiongxiuxuxuanxuexunyayanyangyaoyeyiinyingyoyongyou」。

"yuyuanyueyunzazaizanzangzaozzeseizenzengzhazhaizhanzhaozhezhenzhengzhizhong".

"周zhuzhuaizhuanzhuangzhuizhunzhuozizongzouzuanzuizunzuo";

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

リセット($_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 .= _ピンイン($_P, $_Data);

}

return preg_replace("/[^a-z0-9]*/", '', $_Res);

}

関数 _ピンイン($_Num, $_Data)

{

if ($_Num>0 && $_Num<160 ) return chr($_Num);

elseif($_Num<-20319 $_Num>-10247) return '';

他 {

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

$k を返します;

}

}

関数_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);

}

関数 _Array_Combine($_Arr1, $_Arr2)

{

for($i=0; $i

$_Res を返す;

}

//使用法:

//第二パラメータ数留空则範囲gb1232编码

echo Pinyin('PHP100中文网');

// 2 番目のパラメータ随意配置は utf-8 编码

echo ピンイン('张恩民',1);

?> 



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート