能把汉字转化为拼音的一个函数

本文介绍了一种使用PHP实现的中文字符编码转换方法,通过构建一个多维数组来映射拼音到特定编码,解决了中文在文件名及URL中引起的错误问题。此方案适用于需要处理中文字符的Web应用程序。
很多问题都是因为中文问题造成的 
如文件名最好别用中文 
现在的解决方法一般是产生一个ID,将这个ID做文件名 
网页上如果url带汉字也经常出错 
现在的解决方法一般用urlencode编码 

现在用了这个转化,就好多了 

原理:利用多维数组 
1.添加索引

2.遍历数组

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

echo c($hz);
?>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值