本文实例讲述了PHP基于自定义函数实现的汉字转拼音功能。分享给大家供大家参考,具体如下:
整个过程用到了pinyin.table文件。
pinyin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
|
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 |
备注:新建text文件复制下面代码到文件,重命名文件名pinyin.table
PS:这里再为大家提供几款本站拼音与字母相关工具供大家参考:
在线中文汉字转拼音工具:https://tool.zzvips.com/t/pinyin/
在线全角半角转换工具:https://tool.zzvips.com/t/fullhalf/
在线字母大小写转换工具:https://tool.zzvips.com/t/daxiaoxie/
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://blog.csdn.net/tf198910/article/details/44958955