使用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读注册表
Oct 09 PHP
收集的DedeCMS一些使用经验
Mar 17 PHP
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
php cc攻击代码与防范方法
Oct 18 PHP
调整PHP的性能
Oct 30 PHP
MySql数据库查询结果用表格输出PHP代码示例
Mar 20 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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 学习提高路线分享
2011/10/23 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
php多任务程序实例解析
2014/07/19 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
javascript常见操作汇总
2014/09/03 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
python实现批量改文件名称的方法
2015/05/25 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python数据可视化图实现过程详解
2020/06/12 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
元宵晚会主持词
2014/03/25 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
机器人总动员观后感
2015/06/09 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
Python 数据可视化之Seaborn详解
2021/11/02 Python