PHP汉字转换拼音的函数代码


Posted in PHP onDecember 30, 2015

本文实例为大家分享了PHP汉字转换拼音的函数代码,供大家参考,具体实现内容如下

<?php
/************
 *汉字转换拼音Class
 *************/
class pin{
  function Pinyin($_String, $_Code='gb2312'){
     
    $_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha".
          "|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|".
          "cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er".
          "|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui".
          "|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang".
          "|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang".
          "|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue".
          "|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne".
          "|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen".
          "|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang".
          "|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|".
          "she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|".
          "tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu".
          "|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you".
          "|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|".
          "zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
           
    $_DataValue = "-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990".
          "|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725".
          "|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263".
          "|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003".
          "|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697".
          "|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211".
          "|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922".
          "|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468".
          "|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664".
          "|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407".
          "|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959".
          "|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652".
          "|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369".
          "|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128".
          "|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914".
          "|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645".
          "|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149".
          "|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087".
          "|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658".
          "|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340".
          "|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888".
          "|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585".
          "|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847".
          "|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055".
          "|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780".
          "|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274".
          "|-10270|-10262|-10260|-10256|-10254";
           
    $_TDataKey = explode('|', $_DataKey);
    $_TDataValue = explode('|', $_DataValue);
    $_Data = (PHP_VERSION>='5.0') ? array_combine($_TDataKey, $_TDataValue) : $this->Arr_Combine($_TDataKey, $_TDataValue);
    arsort($_Data);
    reset($_Data);
    if($_Code != 'gb2312') $_String = $this->U2_Utf8_Gb($_String);
    $_Res = '';
    for($i=0; $i<strlen($_String); $i++){
      $_P = ord(substr($_String, $i, 1));
      if($_P>160) { $_Q = ord(substr($_String, ++$i, 1)); $_P = $_P*256 + $_Q - 65536; }
      $_Res .= $this->Pinyins($_P, $_Data);
    }
    return $_Res;
    //return preg_replace("/[^a-z0-9]*/", '', $_Res);
  }
     
  function Pinyins($_Num, $_Data){
    if ($_Num>0 && $_Num<160 ) return chr($_Num);
      elseif($_Num<-20319 || $_Num>-10247) return '';
    else {
      foreach($_Data as $k=>$v){ if($v<=$_Num) break; }
      return $k;
    }
  }
  function U2_Utf8_Gb($_C){
    $_String = '';
    if($_C < 0x80){ 
      $_String .= $_C;
    }elseif($_C < 0x800){
      $_String .= chr(0xC0 | $_C>>6);
      $_String .= chr(0x80 | $_C & 0x3F);
    }elseif($_C < 0x10000){
      $_String .= chr(0xE0 | $_C>>12);
      $_String .= chr(0x80 | $_C>>6 & 0x3F);
      $_String .= chr(0x80 | $_C & 0x3F);
    }elseif($_C < 0x200000) {
      $_String .= chr(0xF0 | $_C>>18);
      $_String .= chr(0x80 | $_C>>12 & 0x3F);
      $_String .= chr(0x80 | $_C>>6 & 0x3F);
      $_String .= chr(0x80 | $_C & 0x3F);
    }
      return iconv('UTF-8', 'GB2312', $_String);
    }
  function Arr_Combine($_Arr1, $_Arr2){
    for($i=0; $i<count($_Arr1); $i++) $_Res[$_Arr1[$i]] = $_Arr2[$i];
    return $_Res;
  }
}
//用法:
//第二个参数留空则为gb1232编码
//第二个参数随意设置则为utf-8编码
$pin = new pin();
echo $pin->Pinyin(' 中 华 人 民','UTF8');
 
?>

希望本文对大家学习php程序设计有所帮助。

PHP 相关文章推荐
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
PHP异步调用socket实现代码
Jan 12 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
php实现数字补零的方法总结
Sep 12 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 #PHP
php获取当前页面完整URL地址
Dec 30 #PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 #PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 #PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 #PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 #PHP
在WordPress中实现发送http请求的相关函数解析
Dec 29 #PHP
You might like
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
深入理解Javascript中的循环优化
2013/11/09 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
python如何读写csv数据
2018/03/21 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Django多数据库的实现过程详解
2019/08/01 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
python实现ftp文件传输功能
2020/03/20 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Python绘制数码晶体管日期
2021/02/19 Python
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
行政前台岗位职责
2013/12/04 职场文书
广告词串烧
2014/03/19 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
销售辞职信范文
2015/03/02 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python