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
随意转载^^但请附上教程地址。