990 lines
24 KiB
PHP
990 lines
24 KiB
PHP
<?php namespace App\Support;
|
|
|
|
class Pinyin
|
|
{
|
|
/**
|
|
* 汉字ASCII码库
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $lib = [
|
|
['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],
|
|
['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]
|
|
];
|
|
|
|
protected static $py_mult_list = [
|
|
'19969' => 'DZ',
|
|
'19975' => 'WM',
|
|
'19988' => 'QJ',
|
|
'20048' => 'YL',
|
|
'20056' => 'SC',
|
|
'20060' => 'NM',
|
|
'20094' => 'QG',
|
|
'20127' => 'QJ',
|
|
'20167' => 'QC',
|
|
'20193' => 'YG',
|
|
'20250' => 'KH',
|
|
'20256' => 'ZC',
|
|
'20282' => 'SC',
|
|
'20285' => 'QJG',
|
|
'20291' => 'TD',
|
|
'20314' => 'YD',
|
|
'20340' => 'NE',
|
|
'20375' => 'TD',
|
|
'20389' => 'YJ',
|
|
'20391' => 'CZ',
|
|
'20415' => 'PB',
|
|
'20446' => 'YS',
|
|
'20447' => 'SQ',
|
|
'20504' => 'TC',
|
|
'20608' => 'KG',
|
|
'20854' => 'QJ',
|
|
'20857' => 'ZC',
|
|
'20911' => 'PF',
|
|
'20504' => 'TC',
|
|
'20608' => 'KG',
|
|
'20854' => 'QJ',
|
|
'20857' => 'ZC',
|
|
'20911' => 'PF',
|
|
'20985' => 'AW',
|
|
'21032' => 'PB',
|
|
'21048' => 'XQ',
|
|
'21049' => 'SC',
|
|
'21089' => 'YS',
|
|
'21119' => 'JC',
|
|
'21242' => 'SB',
|
|
'21273' => 'SC',
|
|
'21305' => 'YP',
|
|
'21306' => 'QO',
|
|
'21330' => 'ZC',
|
|
'21333' => 'SDC',
|
|
'21345' => 'QK',
|
|
'21378' => 'CA',
|
|
'21397' => 'SC',
|
|
'21414' => 'XS',
|
|
'21442' => 'SC',
|
|
'21477' => 'JG',
|
|
'21480' => 'TD',
|
|
'21484' => 'ZS',
|
|
'21494' => 'YX',
|
|
'21505' => 'YX',
|
|
'21512' => 'HG',
|
|
'21523' => 'XH',
|
|
'21537' => 'PB',
|
|
'21542' => 'PF',
|
|
'21549' => 'KH',
|
|
'21571' => 'E',
|
|
'21574' => 'DA',
|
|
'21588' => 'TD',
|
|
'21589' => 'O',
|
|
'21618' => 'ZC',
|
|
'21621' => 'KHA',
|
|
'21632' => 'ZJ',
|
|
'21654' => 'KG',
|
|
'21679' => 'LKG',
|
|
'21683' => 'KH',
|
|
'21710' => 'A',
|
|
'21719' => 'YH',
|
|
'21734' => 'WOE',
|
|
'21769' => 'A',
|
|
'21780' => 'WN',
|
|
'21804' => 'XH',
|
|
'21834' => 'A',
|
|
'21899' => 'ZD',
|
|
'21903' => 'RN',
|
|
'21908' => 'WO',
|
|
'21939' => 'ZC',
|
|
'21956' => 'SA',
|
|
'21964' => 'YA',
|
|
'21970' => 'TD',
|
|
'22003' => 'A',
|
|
'22031' => 'JG',
|
|
'22040' => 'XS',
|
|
'22060' => 'ZC',
|
|
'22066' => 'ZC',
|
|
'22079' => 'MH',
|
|
'22129' => 'XJ',
|
|
'22179' => 'XA',
|
|
'22237' => 'NJ',
|
|
'22244' => 'TD',
|
|
'22280' => 'JQ',
|
|
'22300' => 'YH',
|
|
'22313' => 'XW',
|
|
'22331' => 'YQ',
|
|
'22343' => 'YJ',
|
|
'22351' => 'PH',
|
|
'22395' => 'DC',
|
|
'22412' => 'TD',
|
|
'22484' => 'PB',
|
|
'22500' => 'PB',
|
|
'22534' => 'ZD',
|
|
'22549' => 'DH',
|
|
'22561' => 'PB',
|
|
'22612' => 'TD',
|
|
'22771' => 'KQ',
|
|
'22831' => 'HB',
|
|
'22841' => 'JG',
|
|
'22855' => 'QJ',
|
|
'22865' => 'XQ',
|
|
'23013' => 'ML',
|
|
'23081' => 'WM',
|
|
'23487' => 'SX',
|
|
'23558' => 'QJ',
|
|
'23561' => 'YW',
|
|
'23586' => 'YW',
|
|
'23614' => 'YW',
|
|
'23615' => 'SN',
|
|
'23631' => 'PB',
|
|
'23646' => 'ZS',
|
|
'23663' => 'ZT',
|
|
'23673' => 'YG',
|
|
'23762' => 'TD',
|
|
'23769' => 'ZS',
|
|
'23780' => 'QJ',
|
|
'23884' => 'QK',
|
|
'24055' => 'XH',
|
|
'24113' => 'DC',
|
|
'24162' => 'ZC',
|
|
'24191' => 'GA',
|
|
'24273' => 'QJ',
|
|
'24324' => 'NL',
|
|
'24377' => 'TD',
|
|
'24378' => 'QJ',
|
|
'24439' => 'PF',
|
|
'24554' => 'ZS',
|
|
'24683' => 'TD',
|
|
'24694' => 'WE',
|
|
'24733' => 'LK',
|
|
'24925' => 'TN',
|
|
'25094' => 'ZG',
|
|
'25100' => 'XQ',
|
|
'25103' => 'XH',
|
|
'25153' => 'PB',
|
|
'25170' => 'PB',
|
|
'25179' => 'KG',
|
|
'25203' => 'PB',
|
|
'25240' => 'ZS',
|
|
'25282' => 'FB',
|
|
'25303' => 'NA',
|
|
'25324' => 'KG',
|
|
'25341' => 'ZY',
|
|
'25373' => 'WZ',
|
|
'25375' => 'XJ',
|
|
'25384' => 'A',
|
|
'25457' => 'A',
|
|
'25528' => 'SD',
|
|
'25530' => 'SC',
|
|
'25552' => 'TD',
|
|
'25774' => 'ZC',
|
|
'25874' => 'ZC',
|
|
'26044' => 'YW',
|
|
'26080' => 'WM',
|
|
'26292' => 'PB',
|
|
'26333' => 'PB',
|
|
'26355' => 'ZY',
|
|
'26366' => 'CZ',
|
|
'26397' => 'ZC',
|
|
'26399' => 'QJ',
|
|
'26415' => 'ZS',
|
|
'26451' => 'SB',
|
|
'26526' => 'ZC',
|
|
'26552' => 'JG',
|
|
'26561' => 'TD',
|
|
'26588' => 'JG',
|
|
'26597' => 'CZ',
|
|
'26629' => 'ZS',
|
|
'26638' => 'YL',
|
|
'26646' => 'XQ',
|
|
'26653' => 'KG',
|
|
'26657' => 'XJ',
|
|
'26727' => 'HG',
|
|
'26894' => 'ZC',
|
|
'26937' => 'ZS',
|
|
'26946' => 'ZC',
|
|
'26999' => 'KJ',
|
|
'27099' => 'KJ',
|
|
'27449' => 'YQ',
|
|
'27481' => 'XS',
|
|
'27542' => 'ZS',
|
|
'27663' => 'ZS',
|
|
'27748' => 'TS',
|
|
'27784' => 'SC',
|
|
'27788' => 'ZD',
|
|
'27795' => 'TD',
|
|
'27812' => 'O',
|
|
'27850' => 'PB',
|
|
'27852' => 'MB',
|
|
'27895' => 'SL',
|
|
'27898' => 'PL',
|
|
'27973' => 'QJ',
|
|
'27981' => 'KH',
|
|
'27986' => 'HX',
|
|
'27994' => 'XJ',
|
|
'28044' => 'YC',
|
|
'28065' => 'WG',
|
|
'28177' => 'SM',
|
|
'28267' => 'QJ',
|
|
'28291' => 'KH',
|
|
'28337' => 'ZQ',
|
|
'28463' => 'TL',
|
|
'28548' => 'DC',
|
|
'28601' => 'TD',
|
|
'28689' => 'PB',
|
|
'28805' => 'JG',
|
|
'28820' => 'QG',
|
|
'28846' => 'PB',
|
|
'28952' => 'TD',
|
|
'28975' => 'ZC',
|
|
'29100' => 'A',
|
|
'29325' => 'QJ',
|
|
'29575' => 'SL',
|
|
'29602' => 'FB',
|
|
'30010' => 'TD',
|
|
'30044' => 'CX',
|
|
'30058' => 'PF',
|
|
'30091' => 'YSP',
|
|
'30111' => 'YN',
|
|
'30229' => 'XJ',
|
|
'30427' => 'SC',
|
|
'30465' => 'SX',
|
|
'30631' => 'YQ',
|
|
'30655' => 'QJ',
|
|
'30684' => 'QJG',
|
|
'30707' => 'SD',
|
|
'30729' => 'XH',
|
|
'30796' => 'LG',
|
|
'30917' => 'PB',
|
|
'31074' => 'NM',
|
|
'31085' => 'JZ',
|
|
'31109' => 'SC',
|
|
'31181' => 'ZC',
|
|
'31192' => 'MLB',
|
|
'31293' => 'JQ',
|
|
'31400' => 'YX',
|
|
'31584' => 'YJ',
|
|
'31896' => 'ZN',
|
|
'31909' => 'ZY',
|
|
'31995' => 'XJ',
|
|
'32321' => 'PF',
|
|
'32327' => 'ZY',
|
|
'32418' => 'HG',
|
|
'32420' => 'XQ',
|
|
'32421' => 'HG',
|
|
'32438' => 'LG',
|
|
'32473' => 'GJ',
|
|
'32488' => 'TD',
|
|
'32521' => 'QJ',
|
|
'32527' => 'PB',
|
|
'32562' => 'ZSQ',
|
|
'32564' => 'JZ',
|
|
'32735' => 'ZD',
|
|
'32793' => 'PB',
|
|
'33071' => 'PF',
|
|
'33098' => 'XL',
|
|
'33100' => 'YA',
|
|
'33152' => 'PB',
|
|
'33261' => 'CX',
|
|
'33324' => 'BP',
|
|
'33333' => 'TD',
|
|
'33406' => 'YA',
|
|
'33426' => 'WM',
|
|
'33432' => 'PB',
|
|
'33445' => 'JG',
|
|
'33486' => 'ZN',
|
|
'33493' => 'TS',
|
|
'33507' => 'QJ',
|
|
'33540' => 'QJ',
|
|
'33544' => 'ZC',
|
|
'33564' => 'XQ',
|
|
'33617' => 'YT',
|
|
'33632' => 'QJ',
|
|
'33636' => 'XH',
|
|
'33637' => 'YX',
|
|
'33694' => 'WG',
|
|
'33705' => 'PF',
|
|
'33728' => 'YW',
|
|
'33882' => 'SR',
|
|
'34067' => 'WM',
|
|
'34074' => 'YW',
|
|
'34121' => 'QJ',
|
|
'34255' => 'ZC',
|
|
'34259' => 'XL',
|
|
'34425' => 'JH',
|
|
'34430' => 'XH',
|
|
'34485' => 'KH',
|
|
'34503' => 'YS',
|
|
'34532' => 'HG',
|
|
'34552' => 'XS',
|
|
'34558' => 'YE',
|
|
'34593' => 'ZL',
|
|
'34660' => 'YQ',
|
|
'34892' => 'XH',
|
|
'34928' => 'SC',
|
|
'34999' => 'QJ',
|
|
'35048' => 'PB',
|
|
'35059' => 'SC',
|
|
'35098' => 'ZC',
|
|
'35203' => 'TQ',
|
|
'35265' => 'JX',
|
|
'35299' => 'JX',
|
|
'35782' => 'SZ',
|
|
'35828' => 'YS',
|
|
'35830' => 'E',
|
|
'35843' => 'TD',
|
|
'35895' => 'YG',
|
|
'35977' => 'MH',
|
|
'36158' => 'JG',
|
|
'36228' => 'QJ',
|
|
'36426' => 'XQ',
|
|
'36466' => 'DC',
|
|
'36710' => 'JC',
|
|
'36711' => 'ZYG',
|
|
'36767' => 'PB',
|
|
'36866' => 'SK',
|
|
'36951' => 'YW',
|
|
'37034' => 'YX',
|
|
'37063' => 'XH',
|
|
'37218' => 'ZC',
|
|
'37325' => 'ZC',
|
|
'38063' => 'PB',
|
|
'38079' => 'TD',
|
|
'38085' => 'QY',
|
|
'38107' => 'DC',
|
|
'38116' => 'TD',
|
|
'38123' => 'YD',
|
|
'38224' => 'HG',
|
|
'38241' => 'XTC',
|
|
'38271' => 'ZC',
|
|
'38415' => 'YE',
|
|
'38426' => 'KH',
|
|
'38461' => 'YD',
|
|
'38463' => 'AE',
|
|
'38466' => 'PB',
|
|
'38477' => 'XJ',
|
|
'38518' => 'YT',
|
|
'38551' => 'WK',
|
|
'38585' => 'ZC',
|
|
'38704' => 'XS',
|
|
'38739' => 'LJ',
|
|
'38761' => 'GJ',
|
|
'38808' => 'SQ',
|
|
'39048' => 'JG',
|
|
'39049' => 'XJ',
|
|
'39052' => 'HG',
|
|
'39076' => 'CZ',
|
|
'39271' => 'XT',
|
|
'39534' => 'TD',
|
|
'39552' => 'TD',
|
|
'39584' => 'PB',
|
|
'39647' => 'SB',
|
|
'39730' => 'LG',
|
|
'39748' => 'TPB',
|
|
'40109' => 'ZQ',
|
|
'40479' => 'ND',
|
|
'40516' => 'HG',
|
|
'40536' => 'HG',
|
|
'40583' => 'QJ',
|
|
'40765' => 'YQ',
|
|
'40784' => 'QJ',
|
|
'40840' => 'YK',
|
|
'40863' => 'QJG'
|
|
];
|
|
|
|
protected static $code = 'utf-8';
|
|
|
|
public static function getstr($str)
|
|
{
|
|
$code = static::$code;
|
|
$arr = array();
|
|
for ($i = 0, $len = mb_strlen($str, $code); $i < $len; $i++) {
|
|
$single = mb_substr($str, $i, 1, $code);
|
|
$ch = static::utf8_unicode($single, $code); // 获得unicode码
|
|
$w = static::$py_mult_list[$ch];
|
|
$arr[] = ($w) ? $w : static::getfirstchar($single);
|
|
}
|
|
|
|
$result = array("");
|
|
foreach ($arr as $v) {
|
|
if ($v) {
|
|
$result = static::makePY_list($v, $result);
|
|
}
|
|
}
|
|
return implode('|', $result);
|
|
}
|
|
|
|
public static function makePY_list($str, $arr)
|
|
{
|
|
for ($i = 0, $len = strlen($str); $i < $len; $i++) {
|
|
foreach ($arr as $t) {
|
|
$re[] = $t . $str[$i];
|
|
}
|
|
}
|
|
return $re;
|
|
}
|
|
|
|
// 读取utf8字符的unicode码
|
|
public static function utf8_unicode($c, $charset = "utf-8")
|
|
{
|
|
if ($charset != "utf-8") {
|
|
$c = iconv($charset, "utf-8", $c);
|
|
}
|
|
switch (strlen($c)) {
|
|
case 1:
|
|
return ord($c);
|
|
case 2:
|
|
$n = (ord($c[0]) & 0x3f) << 6;
|
|
$n+= ord($c[1]) & 0x3f;
|
|
return $n;
|
|
case 3:
|
|
$n = (ord($c[0]) & 0x1f) << 12;
|
|
$n+= (ord($c[1]) & 0x3f) << 6;
|
|
$n+= ord($c[2]) & 0x3f;
|
|
return $n;
|
|
case 4:
|
|
$n = (ord($c[0]) & 0x0f) << 18;
|
|
$n+= (ord($c[1]) & 0x3f) << 12;
|
|
$n+= (ord($c[2]) & 0x3f) << 6;
|
|
$n+= ord($c[3]) & 0x3f;
|
|
return $n;
|
|
}
|
|
}
|
|
|
|
// 获得单个汉字拼音首字母
|
|
public static function getfirstchar($s0)
|
|
{
|
|
$fchar = ord($s0{0});
|
|
|
|
if ($fchar >= ord('A') and $fchar <= ord('z')) {
|
|
return strtoupper($s0{0});
|
|
}
|
|
|
|
$s1 = iconv('UTF-8', 'gb2312', $s0);
|
|
$s2 = iconv('gb2312', 'UTF-8', $s1);
|
|
if ($s2 == $s0) {
|
|
$s = $s1;
|
|
} else {
|
|
$s = $s0;
|
|
}
|
|
$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
|
|
if ($asc >= - 20319 and $asc <= - 20284) {
|
|
return "A";
|
|
}
|
|
if ($asc >= - 20283 and $asc <= - 19776) {
|
|
return "B";
|
|
}
|
|
if ($asc >= - 19775 and $asc <= - 19219) {
|
|
return "C";
|
|
}
|
|
if ($asc >= - 19218 and $asc <= - 18711) {
|
|
return "D";
|
|
}
|
|
if ($asc >= - 18710 and $asc <= - 18527) {
|
|
return "E";
|
|
}
|
|
if ($asc >= - 18526 and $asc <= - 18240) {
|
|
return "F";
|
|
}
|
|
if ($asc >= - 18239 and $asc <= - 17923) {
|
|
return "G";
|
|
}
|
|
if ($asc >= - 17922 and $asc <= - 17418) {
|
|
return "H";
|
|
}
|
|
if ($asc >= - 17417 and $asc <= - 16475) {
|
|
return "J";
|
|
}
|
|
if ($asc >= - 16474 and $asc <= - 16213) {
|
|
return "K";
|
|
}
|
|
if ($asc >= - 16212 and $asc <= - 15641) {
|
|
return "L";
|
|
}
|
|
if ($asc >= - 15640 and $asc <= - 15166) {
|
|
return "M";
|
|
}
|
|
if ($asc >= - 15165 and $asc <= - 14923) {
|
|
return "N";
|
|
}
|
|
if ($asc >= - 14922 and $asc <= - 14915) {
|
|
return "O";
|
|
}
|
|
if ($asc >= - 14914 and $asc <= - 14631) {
|
|
return "P";
|
|
}
|
|
if ($asc >= - 14630 and $asc <= - 14150) {
|
|
return "Q";
|
|
}
|
|
if ($asc >= - 14149 and $asc <= - 14091) {
|
|
return "R";
|
|
}
|
|
if ($asc >= - 14090 and $asc <= - 13319) {
|
|
return "S";
|
|
}
|
|
if ($asc >= - 13318 and $asc <= - 12839) {
|
|
return "T";
|
|
}
|
|
if ($asc >= - 12838 and $asc <= - 12557) {
|
|
return "W";
|
|
}
|
|
if ($asc >= - 12556 and $asc <= - 11848) {
|
|
return "X";
|
|
}
|
|
if ($asc >= - 11847 and $asc <= - 11056) {
|
|
return "Y";
|
|
}
|
|
if ($asc >= - 11055 and $asc <= - 10247) {
|
|
return "Z";
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 将ASCII编码转化为字符串.
|
|
*
|
|
* @param integer $num
|
|
* @return string
|
|
*/
|
|
protected static function num2str($num)
|
|
{
|
|
if ($num > 0 && $num < 160) {
|
|
return chr($num);
|
|
} elseif ($num < -20319 || $num > -10247) {
|
|
return '';
|
|
} else {
|
|
$total = sizeof(static::$lib) - 1;
|
|
for ($i = $total; $i >= 0; $i--) {
|
|
if (static::$lib[$i][1] <= $num) {
|
|
break;
|
|
}
|
|
}
|
|
return static::$lib[$i][0];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 汉字转化并输出拼音
|
|
*
|
|
* @param string $str 所要转化拼音的汉字
|
|
* @param boolean $utf8 汉字编码是否为utf8
|
|
* @return string
|
|
*/
|
|
public static function output($str, $utf8 = true)
|
|
{
|
|
// 参数分析
|
|
if ($str == '') {
|
|
return false;
|
|
}
|
|
|
|
// 编码转换.
|
|
$str = ($utf8==true) ? iconv('utf-8', 'gbk', $str) : $str;
|
|
$num = strlen($str);
|
|
$pinyin = '';
|
|
|
|
for ($i=0; $i<$num; $i++) {
|
|
$temp = ord(substr($str, $i, 1));
|
|
if ($temp > 160) {
|
|
$temp2 = ord(substr($str, ++$i, 1));
|
|
$temp = $temp * 256 + $temp2-65536;
|
|
}
|
|
$pinyin .= static::num2str($temp);
|
|
}
|
|
// 输出的拼音编码转换.
|
|
return ($utf8 == true) ? iconv('gbk', 'utf-8', $pinyin) : $pinyin;
|
|
}
|
|
}
|