PHP基于自定义函数实现的汉字转拼音功能实例
发布时间:2022-08-03 10:22:58 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP基于自定义函数实现的汉字转拼音功能,涉及php表单及字符串编码转换、遍历等相关操作技巧,需要的朋友可以参考下。 本文实例讲述了PHP基于自定义函数实现的汉字转拼音功能,分享给大家供大家参考,具体如下: 整个过程用到了pinyin.table
这篇文章主要介绍了PHP基于自定义函数实现的汉字转拼音功能,涉及php表单及字符串编码转换、遍历等相关操作技巧,需要的朋友可以参考下。 本文实例讲述了PHP基于自定义函数实现的汉字转拼音功能,分享给大家供大家参考,具体如下: 整个过程用到了pinyin.table文件。 pinyin.php <?php header("Content-Type:text/html;charset=utf-8"); $letters = ""; if ($_GET) { $cat_name = $_GET["cat_name"]; $catname = convert($cat_name); $letters = get_letter($catname, false); } function get_letter($catname, $letter = true) { return $letter ? strtolower(substr(gb2py($catname), 0, 1)) : str_replace(' ', '', gb2py($catname)); } function gb2py($text, $exp = '') { if(!$text) return ''; $data = array(); $tmp = @file('pinyin.table'); // 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。 if(!$tmp) return ''; $tmps = count($tmp); for($i = 0; $i < $tmps; $i++) { $tmp1 = explode(" ", $tmp[$i]); $data[$i]=array($tmp1[0], $tmp1[1]); } $r = array(); $k = 0; $textlen = strlen($text); for($i = 0; $i < $textlen; $i++) { $p = ord(substr($text, $i, 1)); if($p > 160) { $q = ord(substr($text, ++$i, 1)); $p = $p*256+$q-65536; } if($p > 0 && $p < 160) { $r[$k] = chr($p); } elseif($p< -20319 || $p > -10247) { $r[$k] = ''; } else { for($j = $tmps-1; $j >= 0; $j--) { if($data[$j][1]<=$p) break; } $r[$k] = $data[$j][0]; } $k++; } return implode($exp, $r); } function convert($str, $from = 'utf-8', $to = 'gb2312') { if(!$str) return ''; $from = strtolower($from); $to = strtolower($to); if($from == $to) return $str; $from = str_replace('gbk', 'gb2312', $from); $to = str_replace('gbk', 'gb2312', $to); $from = str_replace('utf8', 'utf-8', $from); $to = str_replace('utf8', 'utf-8', $to); if($from == $to) return $str; $tmp = array(); if(function_exists('iconv')) { if(is_array($str)) { foreach($str as $key => $val) { $tmp[$key] = iconv($from, $to."//IGNORE", $val); } return $tmp; } else { return iconv($from, $to."//IGNORE", $str); } } else if(function_exists('mb_convert_encoding')) { if(is_array($str)) { foreach($str as $key => $val) { $tmp[$key] = mb_convert_encoding($val, $to, $from); } return $tmp; } else { return mb_convert_encoding($str, $to, $from); } } else { require_once 'convert.func.php'; return dconvert($str, $to, $from); } } ?> <form action="./" method="get"> <input type="text" name="cat_name" value="<?php echo $cat_name?>" /> <input type="submit" value="提交" /><br /> </form> <?php echo $letters; ?> pinyin.table 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 (编辑:钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |