鼠笼管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
7.1 KiB

<?php
class Tool_Pinyin {
static $map = array('zuo'=>-10254,'zun'=>-10256,'zui'=>-10260,'zuan'=>-10262,'zu'=>-10270,'zou'=>-10274,'zong'=>-10281,'zi'=>-10296,'zhuo'=>-10307,'zhun'=>-10309,'zhui'=>-10315,'zhuang'=>-10322,'zhuan'=>-10328,'zhuai'=>-10329,'zhua'=>-10331,'zhu'=>-10519,'zhou'=>-10533,'zhong'=>-10544,'zhi'=>-10587,'zheng'=>-10764,'zhen'=>-10780,'zhe'=>-10790,'zhao'=>-10800,'zhang'=>-10815,'zhan'=>-10832,'zhai'=>-10838,'zha'=>-11014,'zeng'=>-11018,'zen'=>-11019,'zei'=>-11020,'ze'=>-11024,'zao'=>-11038,'zang'=>-11041,'zan'=>-11045,'zai'=>-11052,'za'=>-11055,'yun'=>-11067,'yue'=>-11077,'yuan'=>-11097,'yu'=>-11303,'you'=>-11324,'yong'=>-11339,'yo'=>-11340,'ying'=>-11358,'yin'=>-11536,'yi'=>-11589,'ye'=>-11604,'yao'=>-11781,'yang'=>-11798,'yan'=>-11831,'ya'=>-11847,'xun'=>-11861,'xue'=>-11867,'xuan'=>-12039,'xu'=>-12058,'xiu'=>-12067,'xiong'=>-12074,'xing'=>-12089,'xin'=>-12099,'xie'=>-12120,'xiao'=>-12300,'xiang'=>-12320,'xian'=>-12346,'xia'=>-12359,'xi'=>-12556,'wu'=>-12585,'wo'=>-12594,'weng'=>-12597,'wen'=>-12607,'wei'=>-12802,'wang'=>-12812,'wan'=>-12829,'wai'=>-12831,'wa'=>-12838,'tuo'=>-12849,'tun'=>-12852,'tui'=>-12858,'tuan'=>-12860,'tu'=>-12871,'tou'=>-12875,'tong'=>-12888,'ting'=>-13060,'tie'=>-13063,'tiao'=>-13068,'tian'=>-13076,'ti'=>-13091,'teng'=>-13095,'te'=>-13096,'tao'=>-13107,'tang'=>-13120,'tan'=>-13138,'tai'=>-13147,'ta'=>-13318,'suo'=>-13326,'sun'=>-13329,'sui'=>-13340,'suan'=>-13343,'su'=>-13356,'sou'=>-13359,'song'=>-13367,'si'=>-13383,'shuo'=>-13387,'shun'=>-13391,'shui'=>-13395,'shuang'=>-13398,'shuan'=>-13400,'shuai'=>-13404,'shua'=>-13406,'shu'=>-13601,'shou'=>-13611,'shi'=>-13658,'sheng'=>-13831,'shen'=>-13847,'she'=>-13859,'shao'=>-13870,'shang'=>-13878,'shan'=>-13894,'shai'=>-13896,'sha'=>-13905,'seng'=>-13906,'sen'=>-13907,'se'=>-13910,'sao'=>-13914,'sang'=>-13917,'san'=>-14083,'sai'=>-14087,'sa'=>-14090,'ruo'=>-14092,'run'=>-14094,'rui'=>-14097,'ruan'=>-14099,'ru'=>-14109,'rou'=>-14112,'rong'=>-14122,'ri'=>-14123,'reng'=>-14125,'ren'=>-14135,'re'=>-14137,'rao'=>-14140,'rang'=>-14145,'ran'=>-14149,'qun'=>-14151,'que'=>-14159,'quan'=>-14170,'qu'=>-14345,'qiu'=>-14353,'qiong'=>-14355,'qing'=>-14368,'qin'=>-14379,'qie'=>-14384,'qiao'=>-14399,'qiang'=>-14407,'qian'=>-14429,'qia'=>-14594,'qi'=>-14630,'pu'=>-14645,'po'=>-14654,'ping'=>-14663,'pin'=>-14668,'pie'=>-14670,'piao'=>-14674,'pian'=>-14678,'pi'=>-14857,'peng'=>-14871,'pen'=>-14873,'pei'=>-14882,'pao'=>-14889,'pang'=>-14894,'pan'=>-14902,'pai'=>-14908,'pa'=>-14914,'ou'=>-14921,'o'=>-14922,'nuo'=>-14926,'nue'=>-14928,'nuan'=>-14929,'nv'=>-14930,'nu'=>-14933,'nong'=>-14937,'niu'=>-14941,'ning'=>-15109,'nin'=>-15110,'nie'=>-15117,'niao'=>-15119,'niang'=>-15121,'nian'=>-15128,'ni'=>-15139,'neng'=>-15140,'nen'=>-15141,'nei'=>-15143,'ne'=>-15144,'nao'=>-15149,'nang'=>-15150,'nan'=>-15153,'nai'=>-15158,'na'=>-15165,'mu'=>-15180,'mou'=>-15183,'mo'=>-15362,'miu'=>-15363,'ming'=>-15369,'min'=>-15375,'mie'=>-15377,'miao'=>-15385,'mian'=>-15394,'mi'=>-15408,'meng'=>-15416,'men'=>-15419,'mei'=>-15435,'me'=>-15436,'mao'=>-15448,'mang'=>-15454,'man'=>-15625,'mai'=>-15631,'ma'=>-15640,'luo'=>-15652,'lun'=>-15659,'lue'=>-15661,'luan'=>-15667,'lv'=>-15681,'lu'=>-15701,'lou'=>-15707,'long'=>-15878,'liu'=>-15889,'ling'=>-15903,'lin'=>-15915,'lie'=>-15920,'liao'=>-15933,'liang'=>-15944,'lian'=>-15958,'lia'=>-15959,'li'=>-16155,'leng'=>-16158,'lei'=>-16169,'le'=>-16171,'lao'=>-16180,'lang'=>-16187,'lan'=>-16202,'lai'=>-16205,'la'=>-16212,'kuo'=>-16216,'kun'=>-16220,'kui'=>-16393,'kuang'=>-16401,'kuan'=>-16403,'kuai'=>-16407,'kua'=>-16412,'ku'=>-16419,'kou'=>-16423,'kong'=>-16427,'keng'=>-16429,'ken'=>-16433,'ke'=>-16448,'kao'=>-16452,'kang'=>-16459,'kan'=>-16465,'kai'=>-16470,'ka'=>-16474,'jun'=>-16647,'jue'=>-16657,'juan'=>-16664,'ju'=>-16689,'jiu'=>-16706,'jiong'=>-16708,'jing'=>-16733,'jin'=>-16915,'jie'=>-16942,'jiao'=>-16970,'jiang'=>-16983,'jian'=>-17185,'jia'=>-17202,'ji'=>-17417,'huo'=>-17427,'hun'=>-17433,'hui'=>-17454,'huang'=>-17468,'huan'=>-17482,'huai'=>-17487,'hua'=>-17496,'hu'=>-17676,'hou'=>-17683,'hong'=>-17692,'heng'=>-17697,'hen'=>-17701,'hei'=>-17703,'he'=>
static function get($pStr, $pCharset = 'UTF-8') {
if (!$pStr) return '';
$pStr = strtolower($pStr);
if ($pCharset != 'gb2312') $pStr = Tool_Pinyin::str2gbk($pStr, $pCharset);
$tPinyin = '';
for ($i = 0; $i < strlen($pStr); $i++) {
if (160 < ($tAscii = ord(substr($pStr, $i, 1)))) {
$tAscii = $tAscii * 256 + ord(substr($pStr, ++$i, 1)) - 65536;
}
$tPinyin .= Tool_Pinyin::ascii2py($tAscii);
}
return preg_replace("/[^a-z0-9]*/", '', $tPinyin);
}
/**
* ascii 转字符
* @param str $pAscii
* @return string
*/
static function ascii2py($pAscii) {
if ($pAscii > 0 && $pAscii < 160) return chr($pAscii);
if ($pAscii < -20319 || $pAscii > -10247) return '';
foreach (Tool_Pinyin::$map as $k => $v) if ($v <= $pAscii) break;
return $k;
}
/**
* 转编码为gb2312
* @param string $pStr 字符串
* @param string $pCharset 字符串编码
*
* @return string
*/
static function str2gbk($pStr, $pCharset) {
$tStr = '';
if ($pStr < 0x80) {
$tStr .= $pStr;
}
elseif ($pStr < 0x800) {
$tStr .= chr(0xC0 | $pStr >> 6);
$tStr .= chr(0x80 | $pStr & 0x3F);
}
elseif ($pStr < 0x10000) {
$tStr .= chr(0xE0 | $pStr >> 12);
$tStr .= chr(0x80 | $pStr >> 6 & 0x3F);
$tStr .= chr(0x80 | $pStr & 0x3F);
}
elseif ($pStr < 0x200000) {
$tStr .= chr(0xF0 | $pStr >> 18);
$tStr .= chr(0x80 | $pStr >> 12 & 0x3F);
$tStr .= chr(0x80 | $pStr >> 6 & 0x3F);
$tStr .= chr(0x80 | $pStr & 0x3F);
}
return iconv($pCharset, 'GB2312', $tStr);
}
}