PHP获取汉字的拼音字母实现程序
一个完整的php获取汉字拼音字母的实现程序,有需要的朋友可参考一下。
<?php
class GetPingYing {
private $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,
'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
);
//全部拼音
public function getAllPY($chinese, $delimiter = '', $length = 0) {
$py = $this->zh_to_pys($chinese, $delimiter);
if ($length) {
$py = substr($py, 0, $length);
}
return $py;
}
//拼音首个字母
public function getFirstPY($chinese) {
$result = '';
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.= substr($this->zh_to_py($p) , 0, 1);
}
return $result;
}
//-------------------中文转拼音--------------------------------//
private function zh_to_py($num, $blank = '') {
if ($num > 0 && $num < 160) {
return chr($num);
} elseif ($num < - 20319 || $num > - 10247) {
return $blank;
} else {
foreach ($this->pylist as $py => $code) {
if ($code > $num) break;
$result = $py;
}
return $result;
}
}
private function zh_to_pys($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->zh_to_py($p);
if ($first) {
return $result[0];
}
}
return implode($delimiter, $result);
}
}
//-------------------------中文转拼音结束--------------------------------//
//中文是双字节,所以需要两个字节连接起来(ASCII码的范围是在161-255)
$c = '齐秦';
for ($i = 0; $i < strlen($c); $i++) {
echo ord($c[$i]) . ' '; //198 235 199 216
}
echo '<br>', chr(198) . chr(235) . chr(199) . chr(216) , '<br>';
//测试
$PingYing = new GetPingYing();
echo '<br>', $PingYing->getFirstPY('羽泉乐队,歌不错-推荐') , '<br>'; //yqldgbc-tj
echo $PingYing->getAllPY('羽泉乐队,歌不错-推荐') , '<br>'; //yuquanleduigebucuo-tuijian文章网址:http://www.phprm.com/frame/php1005311.html
随意转载^^但请附上教程地址。