使用PHP获取汉字的拼音(全部与首字母)


Posted in PHP onJune 27, 2013

废话不多说,直接上代码:

<?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 
?>
PHP 相关文章推荐
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
php 抽象类的简单应用
Sep 06 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
php增删改查示例自己写的demo
Sep 04 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
10个简化PHP开发的工具
Dec 25 PHP
php中动态调用函数的方法
Mar 16 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP微信H5支付开发实例
Jul 25 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
Memcached常用命令以及使用说明详解
Jun 27 #PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 #PHP
解析wamp5下虚拟机配置文档
Jun 27 #PHP
解析CI的AJAX分页 另类实现方法
Jun 27 #PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 #PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 #PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 #PHP
You might like
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
PHP编码转换
2012/11/05 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
php写app用的框架整理
2019/09/29 PHP
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
前端常见跨域解决方案(全)
2017/09/19 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
js实现点击生成随机div
2020/01/16 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
深入了解Python数据类型之列表
2016/06/24 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
基于python中__add__函数的用法
2019/11/25 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
python 如何区分return和yield
2020/09/22 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
工作个人的自我评价
2014/01/14 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书