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

2018-09-07 17:23

阅读:217

  类核心代码:

   <?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汉字转拼音类的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!


评论


亲,登录后才可以留言!