使用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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
PHP中Session的概念
Oct 09 PHP
php编写的一个E-mail验证类
Mar 25 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
php生成图片验证码的方法
Apr 15 PHP
PHP链表操作简单示例
Oct 15 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 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
中英文字符串翻转函数
2008/12/09 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
PyCharm代码格式调整方法
2018/05/23 Python
基于python实现高速视频传输程序
2019/05/05 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
微型企业创业投资计划书
2014/01/10 职场文书
员工培训邀请函
2014/01/11 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
新春联欢会主持词
2014/03/24 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
垂直极限观后感
2015/06/08 职场文书
小学同学聚会感言
2015/07/30 职场文书
网络研修心得体会
2016/01/08 职场文书