PHP获取汉字的拼音(全部与首字母)(转载博博客园2778085001)

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 '
'
, chr (198). chr (235). chr (199). chr (216), '
'
;
   
  
//测试
$PingYing = new GetPingYing();
echo '
'
, $PingYing ->getFirstPY( '羽泉乐队,歌不错-推荐' ), '
'
; //yqldgbc-tj
echo $PingYing ->getAllPY( '羽泉乐队,歌不错-推荐' ), '
'
;   //yuquanleduigebucuo-tuijian
?>

转载于:https://www.cnblogs.com/shitouzi/p/6834977.html

你可能感兴趣的:(PHP获取汉字的拼音(全部与首字母)(转载博博客园2778085001))