使用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 MessagePack介绍
Oct 06 PHP
php使用GeoIP库实例
Jun 27 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
百度地图API使用方法详解
Aug 25 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 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基础知识:类与对象(1)
2006/12/13 PHP
php仿discuz分页效果代码
2008/10/02 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
Js中sort()方法的用法
2006/11/04 Javascript
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
Python 可爱的大小写
2008/09/06 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
浅谈flask源码之请求过程
2018/07/26 Python
详解如何减少python内存的消耗
2019/08/09 Python
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
教师简历自我评价
2014/02/03 职场文书
质量负责人任命书
2014/06/06 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
打架检讨书
2015/01/27 职场文书
MySQL 数据 data 基本操作
2022/05/04 MySQL