ホームページ  >  記事  >  バックエンド開発  >  PHP は、中国語の文字をピンインに変換する方法をツールキットにカプセル化します。

PHP は、中国語の文字をピンインに変換する方法をツールキットにカプセル化します。

WBOY
WBOYオリジナル
2016-06-20 12:53:40797ブラウズ

php は、中国語の文字をピンインに変換するメソッドをツールキットにカプセル化します。コードは次のとおりです。

class PinyinTool {

private static $pylist = array(

'a'=>-20319,'ai'=>-20317,'an'= >-20304,'ang'=>-20295,' ao'=>-20292、

'ba'=>-20283、'bai'=>-20265、'ban' =>-20257、'bang'=>-20242、 'bao'=>-20230、'bei'=>-20051、'ben'=>-20036、'beng'=>-20032、'bi'=>-20026、'bian'=> ;-20002,'biao'=>-19990,'bie'=>-19986,'bin'=>-19982,'bing'= >-19976,'bo'=>-19805,' bu'=>-19784、

'ca'=>-19775、'cai'=>-19774、'can' =>-19763、'cang'=>-19756、 'cao'=>-19751、'ce'=>-19746、'ceng'=>-19741、'cha'=>-19739、'chai'=>-19728、'chan'=> ;-19725,'chang'=>-19715,'chao'=>-19540,'che'=>-19531,'chen'=>-19525,'cheng'=>-19515,' chi'=>-19500、'chong'=>-19484、'chou'=>-19479、'chu'=>-19467、'chuai'=>-19289、'chuan'=> -19288,'chuang'=>-19281,'chui'=>-19275,'chun'=>-19270,'chuo'=>-19263,'ci'=>-19261,'cong '=>-19249、'cou'=>-19243、'cu'=>-19242、'cuan'​​=>-19238、'cui'=>-19235、'cun'=>- 19227,'cuo'=>-19224,

'da'=>-19218,'dai'=>-19212,'dan'=>-19038,'dang'=> -19023,'dao'=>-19018,'de'=>-19006,'deng'=>-19003,'di'=> ;-18996,'dian'=>-18977,'diao '=>-18961、'die'=>-18952、'ding'=>-18783、'diu'=>-18774、'dong'=>-18773、'dou'=>- 18763,'du'=>-18756,'duan'=>-18741,'dui'=>-18735,'dun'=> -18731,'duo'=>-18722,

'e'=>-18710、'en'=>-18697、'er'=>-18696、

'fa'=>-18526、'fan'=> ;-18518,'ファング'=>-18501,'フェイ'=>-18490,'フェン'=>-18478,'フォン'=>-18463,'フォ'=>-18448,' fou'=>-18447、'fu'=>-18446、

'ga'=>-18239、'gai' =>-18237、'gan'=>-18231、 'ギャン'=>-18220、'ガオ'=>-18211、'ゲ'=>-18201、'ゲイ'=>-18184、'ゲン'=>-18183、'ゲン'=> ;-18181,'gong'=>-18012,'gou'=>-17997,'gu'=>-17988,'gua'=>-17970,'guai'=>-17964,' guan'=>-17961、'guang'=>-17950、'gui'=>-17947、

'gun' =>-17931、'guo'=>-17928、

'ハ'=>-17922、'ハイ'=>-17759、'ハン'=>-17752、'ハン'=>-17733、'ハオ'=>-17730 、'he'=>-17721、'hei'=>-17703、'hen'=>-17701、'heng'=>- 17697、'hong'=>-17692、'hou'= >-17683,'hu'=>-17676,'hua'=>-17496,'huai'=>-17487,'huan' =>-17482,'huang'=>-17468, 'hui'=>-17454,

'hun'=>-17433,'huo'=>-17427,

'ji'=>-17417,'jia '=>-17202、'jian'=>-17185、'jiang'=>-16983、'jiao'=>-16970、'jie'=>-16942、'jin'=>- 16915,'jing'=>-16733,'jiong'=>-16708,'jiu'=>-16706,'ju'=> -16689,'juan'=>-16664,'jue' =>-16657,'ジュン'=>-16647,

'カ'=>-16474,'カイ'=> ;-16470,'カン'=>-16465,'カン'=>-16459、'kao'=>-16452、'ke'=>-16448、'ken'=>-16433、'keng'=>-16429、'kong'=>- 16427,'コウ'=>-16423,'ク'=>-16419,'クア'=>-16412,'クアイ'=> -16407,'クアン'=>-16403,'クアン' =>-16401,'kui'=>-16393,'kun'=>-16220,'kuo'=>-16216,

'la'=>-16212,'lai '=>-16205、'lan'=>-16202、'lang'=>-16187、'lao'=>-16180、'le'=>-16171、'lei'=>- 16169,'leng'=>-16158,'li'=>-16155,'lia'=>-15959,'lian'=> -15958,'liang'=>-15944,'liao' =>-15933,'嘘'=>-15920,'リン'=>-15915,'リン'=>-15903,'リュー'=>-15889,

'ロング'=>-15878、'lou'=>-15707、'lu'=>-15701、'lv'=>-15681、'luan'=>-15667、'lue'=>- 15661,'lun'=>-15659,'luo'=>-15652,

'ma'=>-15640, 'mai'=>-15631,'man'=> -15625,'mang'=>-15454,'mao'=>-15448,'me'=>-15436,'mei'=> ;-15435,'men'=>-15419,'meng '=>-15416、'mi'=>-15408、'mian'=>-15394、'miao'=>-15385、'mie'=>-15377、'min'=>- 15375、'明'=>-15369、'ミュウ'=>-15363、'モ'=>-15362、'モウ'=> -15183、'ム'=>-15180、

'na'=>-15165,'nai'=>-15158,'nan'=>-15153,'nang'=>-15150,'nao'=>-15149,'ne '=>-15144、'寧'=>-15143、'年'=>-15141、'年'=>-15140、'ニ'=>-15139、'年'=>- 15128,'niang'=>-15121,'niao'=>-15119,'nie'=>-15117,'nin'=>-15110,'ning'=>-15109,'niu' =>-14941,

'nong'=>-14937,'nu'=>-14933,'nv'=>-14930,'nuan'=>-14929,'nue '=>-14928,'nuo'=>-14926,

'o'=>-14922,'ou'=>-14921,

'pa'= >-14914,'pai'=>-14908,'pan'=>-14902,'pang'=>-14894,'pao'=>-14889,'pei'=>-14882, 'ペン'=>-14873、'ペン'=>-14871、'パイ'=>-14857、'ピアン'=>-14678、'ピャオ'=>-14674、'パイ'=> ;-14670,'ピン'=>-14668,'ピン'=>-14663,'ポ'=>-14654,'プ'=>-14645,

'qi'= >-14630,'qia'=>-14594,'qian'=>-14429,'qiang'=>-14407,'qiao'=>-14399,'qie'=>-14384, 'qin'=>-14379、'qing'=>-14368、'qiong'=>-14355、'qiu'=>-14353、'qu'=>-14345、'quan'=> ;-14170,'que'=>-14159,'qun'=>-14151,

'ran'=>-14149,'rang'=>-14145,'rao'= >-14140、're'=>-14137、'ren'=>-14135、'reng'=>-14125、'ri'=>-14123、'rong'=>-14122、 'rou'=>-14112、'ru'=>-14109、'ruan'=>-14099、'rui'=>-14097、'run'=>-14094、'ruo'=> ;-14092,

'さ'=>-14090,'サイ'=>-14087,'さん'=>-14083,'sang'=>-13917,'sao'= >-13914、'se'=>-13910、'sen'=>-13907、'seng'=>-13906、'sha'=>-13905、'shai'=>-13896、 'シャン'=>-13894、'シャン'=>-13878、'シャオ'=>-13870、'彼女'=>-13859、'シェン'=>-13847、'シェン'=> ;-13831,'shi'=>-13658,'shou'=>-13611,'shu'=>-13601,'shua'=>-13406,'shuai'=>-13404,' shuan'=>-13400、'shuang'=>-13398、'shui'=>-13395、'shun'=>-13391、'shuo'=>-13387、'si'=> -13383,'歌'=>-13367,'想'=>-13359,'す'=>-13356,'すあん'=>-13343,'すい'=>-13340,'sun '=>-13329,'suo'=>-13326,

'ta'=>-13318,'tai'=>-13147,'tan'=>-13138,'タン'=>-13120、'タオ'=>-13107、'テ'=>-13096、'テン'=>-13095、'ティ'=>-13091、'ティアン'=> -13076,'ティアオ'=>-13068,'ネクタイ'=>-13063,'ティング'=>-13060,'トン'=>-12888,'トウ'=>-12875,'トゥ'=>-12871,'tuan'=>-12860,'tui'=>-12858,'tun'=>-12852,'tuo'=>-12849,

' wa'=>-12838、'wai'=>-12831、'wan'=>-12829、'wang'=>-12812、'wei'=>-12802、'wen'=> -12607,'weng'=>-12597,'wo'=>-12594,'wu'=>-12585,

'xi'=>-12556,'xia'=> ;-12359,'xian'=>-12346,'xiang'=>-12320,'xiao'=>-12300,'xie'=>-12120,'xin'=>-12099,' xing'=>-12089、'xiong'=>-12074、'xiu'=>-12067、'xu'=>-12058、'xuan'=>-12039、'xue'=> -11867,'xun'=>-11861,

'ya'=>-11847,'yan'=>-11831,'yang'=>-11798,'yao'=> ;-11781,'ye'=>-11604,'yi'=>-11589,'yin'=>-11536,'ying'=>-11358,'yo'=>-11340,' yong'=>-11339、'you'=>-11324、'yu'=>-11303、'yuan'=>-11097、'yue'=>-11077、'yun'=> -11067,

'za'=>-11055,'zai'=>-11052,'zan'=>-11045,'zang'=>-11041,'zao'=> ;-11038,'ze'=>-11024,'zei'=>-11020,'zen'=>-11019,'zeng'=>-11018,'zha'=>-11014,' zhai'=>-10838、'zhan'=>-10832、'zhang'=>-10815、'zhao'=>-10800、'zhe'=>-10790、'zhen'=> -10780,'鄭'=>-10764,'志'=>-10587,'忠'=>-10544,'周'=>-10533,'朱'=>-10519,'朱華'=>-10331、'zhuai'=>-10329、'zhuan'=>-10328、'zhuang'=>-10322、'zhui'=>-10315、'zhun'=>- 10309,'zhuo'=>-10307,'zi'=>-10296,'zong'=>-10281,'zou'=>-10274,'zu'=>-10270,'zuan' =>-10262,

'zui'=>-10260,'zun'=>-10256,'zuo'=>-10254

);

public static $array1 = array('xxxx');

/**

* 中国語の文字をピンインに変換します

*

* @paramknown_type $name

*/

public static function getConvertedToPinyin($name) {

if ($charset != 'gb2312') $chinese = self::_U2_Utf8_Gb($name);

$py = self::zh_to_pys($chinese, $delimiter);

if( $length) {

$py = substr($py, 0, $length);

}

return $py;

}

/**

+------------------------------------------ ------ -------------------------------------

*すべてのピンインを取得

+---------------------------------------- -------- -----------------------------------

* @return string

+-------------------------------------- ----------- ----------------------------------

*/

public static function getAllPY($chinese, $delimiter = '', $length = 0,$charset='utf-8') {

if($charset != 'gb2312') $chinese = self::_U2_Utf8_Gb($chinese);

$py = self::zh_to_pys($chinese, $delimiter);

if($length) {

$py = substr($py, 0, $length);

}

return $py;

}


/**

+------------------------------------------ ------ -------------------------------------

*ピンインの最初の文字を取得します

+------------------------------------- ----------- ----------------------------------

* @return string

+-------------------------------------- ---------- ------------------------------

*/

public static function getFirstPY($chinese,$charset='utf-8'){

if( $charset != 'gb2312') $chinese = self::_U2_Utf8_Gb($chinese);

$result = '' ;

for ($i=0; $i

$p = ord(substr($chinese,$i,1));

if ($p> <🎜) > $q = ord(substr($chinese,++$i,1));

$p = $p*256 + $q - 65536;

}

$result .= substr(self::zh_to_py($p),0,1);

}

return $result ;

}


public static function _U2_Utf8_Gb($_C){

$_String = '';

if($_C

0x80) $_String .= $_C;

elseif($_C <0x800)

{

$_String .= chr($_C& gt;>6 );

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

}elseif($_C < 0x10000){

$_文字列 .= chr( 0xE0>>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);

}


プライベート静的関数 zh_to_py($num, $blank = '') {

if($num>0 && $num return chr($num);

} elseif ($num<-20319||$num>-10247) {

return $blank;

}それ以外の場合{

foreach (self::$pylist as $py => $code) {

if($code > $num) Break;

$result = $py;

}

return $result;

}

}


private static function zh_to_pys($chinese, $delimiter = ' ', $first=0){

$result = array();

for($i=0; $i

$p = ord(substr($chinese,$i,1));

if($p>160) {

$q = ord(substr($chinese,++) $i,1));

$p = $p*256 + $q - 65536;

}

$result[] = self::zh_to_py($ p);

if ($first) {

return $result[0];

}

}

戻る 爆破する($delimiter, $result);

}

}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。