本文实例讲述了PHP基于自定义函数实现的汉字转拼音功能。分享给大家供大家参考,具体如下:
整个过程用到了pinyin.table文件。
pinyin.PHP
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),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',$to);
$from = str_replace('utf8','utf-8',$from);
$to = str_replace('utf8',$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,$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,$from);
}
} else {
require_once 'convert.func.PHP';
return dconvert($str,$from);
}
}
?>
pinyin.table
403
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
备注:
新建text文件复制下面代码到文件,重命名文件名pinyin.tablePS:这里再为大家提供几款本站拼音与字母相关工具供大家参考:
中文汉字转拼音工具:
在线字母大小写转换工具:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。