PHP基于自定义函数实现的汉字转拼音功能实例

2025-05-29 0 14

本文实例讲述了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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP基于自定义函数实现的汉字转拼音功能实例 https://www.kuaiidc.com/93748.html

相关文章

发表评论
暂无评论