494 lines
12 KiB
PHP
494 lines
12 KiB
PHP
<?php
|
||
/**
|
||
* Created by Green Studio.
|
||
* File: File.class.php
|
||
* Date: 14-1-31
|
||
* Time: 下午2:53
|
||
*/
|
||
|
||
namespace app\common\util;
|
||
class ChineseSpell {//注意仅支持:GBK,故传入参数前须转码
|
||
/**
|
||
* @var array $chineseSpellList 拼音编码对应表
|
||
* @access private
|
||
*/
|
||
private $chineseSpellList = 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,
|
||
'fang'=>-18501,
|
||
'fei'=>-18490,
|
||
'fen'=>-18478,
|
||
'feng'=>-18463,
|
||
'fo'=>-18448,
|
||
'fou'=>-18447,
|
||
'fu'=>-18446,
|
||
'ga'=>-18239,
|
||
'gai'=>-18237,
|
||
'gan'=>-18231,
|
||
'gang'=>-18220,
|
||
'gao'=>-18211,
|
||
'ge'=>-18201,
|
||
'gei'=>-18184,
|
||
'gen'=>-18183,
|
||
'geng'=>-18181,
|
||
'gong'=>-18012,
|
||
'gou'=>-17997,
|
||
'gu'=>-17988,
|
||
'gua'=>-17970,
|
||
'guai'=>-17964,
|
||
'guan'=>-17961,
|
||
'guang'=>-17950,
|
||
'gui'=>-17947,
|
||
'gun'=>-17931,
|
||
'guo'=>-17928,
|
||
'ha'=>-17922,
|
||
'hai'=>-17759,
|
||
'han'=>-17752,
|
||
'hang'=>-17733,
|
||
'hao'=>-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,
|
||
'jun'=>-16647,
|
||
'ka'=>-16474,
|
||
'kai'=>-16470,
|
||
'kan'=>-16465,
|
||
'kang'=>-16459,
|
||
'kao'=>-16452,
|
||
'ke'=>-16448,
|
||
'ken'=>-16433,
|
||
'keng'=>-16429,
|
||
'kong'=>-16427,
|
||
'kou'=>-16423,
|
||
'ku'=>-16419,
|
||
'kua'=>-16412,
|
||
'kuai'=>-16407,
|
||
'kuan'=>-16403,
|
||
'kuang'=>-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,
|
||
'lie'=>-15920,
|
||
'lin'=>-15915,
|
||
'ling'=>-15903,
|
||
'liu'=>-15889,
|
||
'long'=>-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,
|
||
'ming'=>-15369,
|
||
'miu'=>-15363,
|
||
'mo'=>-15362,
|
||
'mou'=>-15183,
|
||
'mu'=>-15180,
|
||
'na'=>-15165,
|
||
'nai'=>-15158,
|
||
'nan'=>-15153,
|
||
'nang'=>-15150,
|
||
'nao'=>-15149,
|
||
'ne'=>-15144,
|
||
'nei'=>-15143,
|
||
'nen'=>-15141,
|
||
'neng'=>-15140,
|
||
'ni'=>-15139,
|
||
'nian'=>-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,
|
||
'pen'=>-14873,
|
||
'peng'=>-14871,
|
||
'pi'=>-14857,
|
||
'pian'=>-14678,
|
||
'piao'=>-14674,
|
||
'pie'=>-14670,
|
||
'pin'=>-14668,
|
||
'ping'=>-14663,
|
||
'po'=>-14654,
|
||
'pu'=>-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,
|
||
'sa'=>-14090,
|
||
'sai'=>-14087,
|
||
'san'=>-14083,
|
||
'sang'=>-13917,
|
||
'sao'=>-13914,
|
||
'se'=>-13910,
|
||
'sen'=>-13907,
|
||
'seng'=>-13906,
|
||
'sha'=>-13905,
|
||
'shai'=>-13896,
|
||
'shan'=>-13894,
|
||
'shang'=>-13878,
|
||
'shao'=>-13870,
|
||
'she'=>-13859,
|
||
'shen'=>-13847,
|
||
'sheng'=>-13831,
|
||
'shi'=>-13658,
|
||
'shou'=>-13611,
|
||
'shu'=>-13601,
|
||
'shua'=>-13406,
|
||
'shuai'=>-13404,
|
||
'shuan'=>-13400,
|
||
'shuang'=>-13398,
|
||
'shui'=>-13395,
|
||
'shun'=>-13391,
|
||
'shuo'=>-13387,
|
||
'si'=>-13383,
|
||
'song'=>-13367,
|
||
'sou'=>-13359,
|
||
'su'=>-13356,
|
||
'suan'=>-13343,
|
||
'sui'=>-13340,
|
||
'sun'=>-13329,
|
||
'suo'=>-13326,
|
||
'ta'=>-13318,
|
||
'tai'=>-13147,
|
||
'tan'=>-13138,
|
||
'tang'=>-13120,
|
||
'tao'=>-13107,
|
||
'te'=>-13096,
|
||
'teng'=>-13095,
|
||
'ti'=>-13091,
|
||
'tian'=>-13076,
|
||
'tiao'=>-13068,
|
||
'tie'=>-13063,
|
||
'ting'=>-13060,
|
||
'tong'=>-12888,
|
||
'tou'=>-12875,
|
||
'tu'=>-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,
|
||
'zheng'=>-10764,
|
||
'zhi'=>-10587,
|
||
'zhong'=>-10544,
|
||
'zhou'=>-10533,
|
||
'zhu'=>-10519,
|
||
'zhua'=>-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
|
||
);
|
||
|
||
/**
|
||
* 取汉字所有拼音
|
||
* @param string $chinese 要转换的汉字
|
||
* @param string $delimiter 分隔符
|
||
* @param int $length 返回的长度
|
||
* @return string
|
||
*/
|
||
public function getFullSpell($chinese, $delimiter = '', $length = 0){
|
||
$spell = $this->getChineseSpells($chinese, $delimiter);
|
||
if($length){
|
||
$spell = substr($spell, 0, $length);
|
||
}
|
||
return $spell;
|
||
}
|
||
|
||
/**
|
||
* 取汉字第【一个】汉字完整拼音
|
||
* @param string $chinese 要转换的汉字
|
||
* @param int $length 返回的长度
|
||
* @return string
|
||
*/
|
||
public function getFirstSpell($chinese, $length = 0){
|
||
$spell = $this->getChineseSpells($chinese, ' ', 1);
|
||
if($length){
|
||
$spell = substr($spell, 0, $length);
|
||
}
|
||
return $spell;
|
||
}
|
||
|
||
/**
|
||
* 取一个汉字码对应的拼音
|
||
* @param int $num 汉字码
|
||
* @param string $blank 空白字符
|
||
* @return string
|
||
*/
|
||
public function getChineseSpell ($num, $blank = ''){
|
||
if($num>0 && $num<160){
|
||
return chr($num);
|
||
}
|
||
elseif($num<-20319||$num>-10247){
|
||
return $blank;
|
||
}
|
||
else{
|
||
foreach ($this->chineseSpellList as $spell => $code){
|
||
if ($code > $num) break;
|
||
$result = $spell;
|
||
}
|
||
return $result;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 取汉字拼音
|
||
* @param string $chinese 要转换的汉字
|
||
* @param string $delimiter 分隔符
|
||
* @param int $first 是否只返回第一个
|
||
* @return string
|
||
*/
|
||
public function getChineseSpells($chinese, $delimiter = '', $first=0){
|
||
$result = array();
|
||
for($i=0; $i<strlen($chinese); $i++){
|
||
$p = ord(substr($chinese,$i,1));
|
||
if($p>160){
|
||
$q = ord(substr($chinese,++$i,1));
|
||
$p = $p*256 + $q - 65536;
|
||
}
|
||
$result[] = $this->getChineseSpell($p);
|
||
if($first){
|
||
return $result[0];
|
||
}
|
||
}
|
||
return implode($delimiter, $result);
|
||
}
|
||
}
|
||
//$ok=new ChineseSpell();
|
||
//$str='%^&《》:“{}AGDFasdfas===取汉字所有拼音';
|
||
//echo $ok->getFullSpell($str);
|
||
//echo '<p />';
|
||
//echo $ok->getChineseSpells($str);
|
||
|