首页 > php框架 > PHP获取汉字的拼音字母实现程序

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

随意转载^^但请附上教程地址。

标签:none

发表留言