Yii2汉字转拼音类的实例代码


Posted in PHP onApril 18, 2017

类核心代码:

<?php
namespace mobile\models;
use Yii;
use yii\base\Model;
/**
 * 汉字转拼音
 * @property integer 
 */
class SpellModel extends Model
{
  /** 
   * 拼音字符转换图 
   * @var array 
   */ 
  private static $_aMaps = 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 
  ); 
  /** 
   * 将中文编码成拼音 
   * @param string $utf8Data utf8字符集数据 
   * @param string $sRetFormat 返回格式 [head:首字母|all:全拼音] 
   * @return string 
   */ 
  public static function encode($utf8Data, $sRetFormat='head'){ 
    $sGBK = iconv('UTF-8', 'GBK', $utf8Data); 
    $aBuf = array(); 
    for ($i=0, $iLoop=strlen($sGBK); $i<$iLoop; $i++) { 
      $iChr = ord($sGBK{$i}); 
      if ($iChr>160) 
        $iChr = ($iChr<<8) + ord($sGBK{++$i}) - 65536; 
      if ('head' === $sRetFormat) 
        $aBuf[] = substr(self::zh2py($iChr),0,1); 
      else 
        $aBuf[] = self::zh2py($iChr); 
    } 
    if ('head' === $sRetFormat) 
      return implode('', $aBuf); 
    else 
      return implode(' ', $aBuf); 
  } 
  /** 
   * 中文转换到拼音(每次处理一个字符) 
   * @param number $iWORD 待处理字符双字节 
   * @return string 拼音 
   */ 
  private static function zh2py($iWORD) { 
    if($iWORD>0 && $iWORD<160 ) { 
      return chr($iWORD); 
    } elseif ($iWORD<-20319||$iWORD>-10247) { 
      return ''; 
    } else { 
      foreach (self::$_aMaps as $py => $code) { 
        if($code > $iWORD) break; 
        $result = $py; 
      } 
      return $result; 
    } 
  } 
}

使用示例:

// 选择城市
  public function actionCity()
  {
    $parameters = '
      "requestType": 0
    ';
    $PortData = Interfaces::Connections('city/addresslist', true, Interfaces::Montage($parameters));
    $PortData = json_decode($PortData, true);
    // 热门城市
    $model['topList'] = isset($PortData['topList']) ? $PortData['topList']:[];
    // 所有城市
    $dataList = isset($PortData['topList']) ? $PortData['dataList']:[];
    $model['cityList'] = [];
    if(!empty($dataList)){
      foreach ($dataList as $key => $value) {
        $spell = mobile\models\SpellModel::encode($value['name']);
        $spell = mb_substr($spell , 0 , 1); 
        if(!empty($spell)) $model['cityList'][$spell][] = $value;
      }
      ksort($model['cityList']); //排序
    }
    return $this->render('city', [
      'model' => $model,
    ]);
  }

效果图如下:

Yii2汉字转拼音类的实例代码

以上所述是小编给大家介绍的Yii2汉字转拼音类的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
解析smarty模板中类似for的功能实现
Jun 18 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 #PHP
ZendFramework2连接数据库操作实例
Apr 18 #PHP
PHP实现的数独求解问题示例
Apr 18 #PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 #PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 #PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 #PHP
PHP递归删除多维数组中的某个值
Apr 17 #PHP
You might like
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python如何将图片转换为字符图片
2020/08/19 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
Python实现时间序列可视化的方法
2019/08/06 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
HTML5中的新元素介绍
2008/10/17 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
村捐赠仪式答谢词
2014/01/21 职场文书
致200米运动员广播稿
2014/02/06 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
出生医学证明书
2014/09/15 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
解决 redis 无法远程连接
2022/05/15 Redis