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

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:这里再为大家提供几款本站拼音与字母相关工具供大家参考:

在线中英文根据首字母排序工具:

http://tools.jb51.net/aideddesign/zh_paixu

在线汉字转换成拼音工具:

http://tools.jb51.net/transcoding/pinyin

在线中文汉字转拼音工具:

http://tools.jb51.net/transcoding/hanzi2pinyin

在线中文汉字拼音对照转换工具:

http://tools.jb51.net/transcoding/zh_pinyin

在线字母大小写转换工具:

http://tools.jb51.net/transcoding/upper

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP编码与转码操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常用函数与技巧总结》及《PHP错误与异常处理方法总结》

希望本文所述对大家PHP程序设计有所帮助。

以上是 PHP基于自定义函数实现的汉字转拼音功能实例 的全部内容, 来源链接: utcz.com/z/324656.html

回到顶部