biggates的心得
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
38 随笔 :: 1 文章 :: 20 评论 :: 2 引用
通过PHP获取生僻字的汉语拼音
最近使用到汉字到拼音的转换,因此在众多搜索结果干扰项中探得此文。由于原文思路清晰,观点独特,故转载于此。本文实质上使用的是查表法,全文内容基本上是字典的获取方法
注意:本文转自 http://blog.verycd.com/dash/cmd=showentry&eid=1677 ,以下为原文
细心的网友可能会发现,VeryCD的资源搜索是支持拼音的,不论你是直接输入拼音,还是输入同音字,我们的搜索程序都会提示你正确的关键字。比如:
http://search.verycd.com/search?q=萧雅轩
(注:此链接已经过时)
之前我们使用的是一个网上已经很普遍的
汉字转拼音函数
,通过使用后发现,这个函数的算法虽然简便,但只能取得GB2312中根据拼音排列的3755个常用汉字,所以其适用范围很有限。由于其它汉字大都按部首/笔画顺序排列,所以我们只能通过建立一个汉字-拼音表来实现一一对应。
这个时候
输入法生成器
就派上了用场,利用它的逆转换功能生成一个汉字拼音的文本文件。然后再写一个PHP小程序,即可删除这个文本文件中的词组和多音字。
1
<?
php
2
//
注意,在2000/XP下生成的文本文件是Unicode格式,需要先转换到GB2312
3
$py
=
file_get_contents
(
"
WINPY.TXT
"
);
4
$arr_tmp
=
explode
(
"
\r\n
"
,
$py
);
5
$arr_py
=
array
();
6
foreach
(
$arr_tmp
as
$v
)
7
{
8
if
(
preg_match
(
"
/^[
"
.
chr
(
0x81
)
.
"
-
"
.
chr
(
0xfe
)
.
"
].[a-z]/
"
,
$v
))
9
{
10
$word
=
substr
(
$v
,
0
,
2
);
11
if
(
!
$arr_py
[
$word
])
12
{
13
$arr_py
[
$word
]
=
substr
(
$v
,
2
);
14
$output
.=
$v
.
"
\n
"
;
15
}
16
}
17
}
18
$handle
=
fopen
(
"
WINPY2.TXT
"
,
'
w
'
);
19
fwrite
(
$handle
,
$output
);
20
?>
通过读入WINPY2.TXT再配合几个
字符串操作函数
就可以非常简单的获取到汉字的拼音了(具体的代码xdanger还在写,我这里就不贴出来了)
附注:我们在最后处理的时候忽略了多音字的因素,以后仍然有待改进。
网上
关于正则判断中文的文章
大都使用[chr(0xa1)-chr(0xff)]来判断中文,事实上这只能判断出GB2312的几千个汉字,生僻字和繁体字都不包含在内,正确的应该是[chr(0x81)-chr(0xfe)]。
注:原附件已被删除,本文仅提供原理。
@biggates_x86
微博
腾讯微博
标签:
biggates
,
php
,
拼音
,
字典
,
查表
,
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2008-03-13 23:35
biggates
阅读(627)
评论(0)
编辑
收藏
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
最想要的Entity Framework功能
·
专访Jeffrey Richter:Windows 8是微软的重中之重
·
《福布斯》:谷歌进军硬件产品 难撼动苹果地位
·
美国空军拟最多购买1.8万台iPad 2
·
分析称专利之争让谷歌苹果两败俱伤
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
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
1
2
3
4
5
公告
昵称:
biggates
园龄:
4年1个月
粉丝:
2
关注:
1
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
最新随笔
1. gdb前端Nemiver
2. 在Ubuntu中使用autofs自动加载Virtual Box数据空间
3. -lm 必须放在 gcc 命令的最后
4. 常用WinXP小工具集合
5. VritualBox 数据空间使用手记
6. 在 Google Buzz 中使用格式
7. x64 WAMP + Oracle 环境搭建
8. 查看Oracle Dump文件的结构
9. 解决 Vista 下 IceGrid 调试时的监视错误
10. 使用163镜像在线安装CentOS
我的标签
biggates
(20)
php
(7)
JavaScript
(5)
C#
(4)
Internet Explorer
(4)
C++
(3)
IE
(3)
CSS
(3)
Google
(3)
java
(3)
更多
随笔分类
(35)
.NET(3)
(rss)
Assembly(1)
(rss)
C#(3)
(rss)
C/C++(3)
(rss)
HTML/CSS(6)
(rss)
Java
(rss)
JavaScript(6)
(rss)
Lua
(rss)
php(6)
(rss)
Widgets & Gadgets(7)
(rss)
随笔档案
(38)
2011年12月 (2)
2011年10月 (1)
2010年4月 (1)
2010年3月 (1)
2010年2月 (1)
2009年12月 (1)
2009年11月 (1)
2009年8月 (1)
2009年6月 (3)
2009年5月 (1)
2009年4月 (1)
2009年2月 (2)
2009年1月 (1)
2008年12月 (1)
2008年7月 (1)
2008年6月 (3)
2008年5月 (1)
2008年4月 (2)
2008年3月 (1)
2008年2月 (2)
2008年1月 (10)
积分与排名
积分 - 13807
排名 - 6891
最新评论
阅读排行榜
评论排行榜
推荐排行榜