加入收藏 | 设为首页 | 会员中心 | 我要投稿 钦州站长网 (https://www.0777zz.cn/)- 智能办公、数据计算、云存储网关、负载均衡、设备管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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 

(编辑:钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读