biggates的心得
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
29 随笔 :: 1 文章 :: 21 评论 :: 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)]。
注:原附件已被删除,本文仅提供原理。
旧版请见
http://biggates.spaces.live.com
生活版请见
http://www.myspace.cn/biggates
技术版请见
http://biggates.cnblogs.com
游戏版请见
http://biggates.wownei.com
其它问题请咨询
http://www.google.com
Tag标签:
biggates
,
php
,
拼音
,
字典
,
查表
,
posted on 2008-03-13 23:35
biggates
阅读(333)
评论(0)
编辑
收藏
网摘
所属分类:
php
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
1104594
链接:
切换模板
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
Twitter无处不在 魔兽世界Twitter发送器插件发布
Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新
预测:Twitter最可能收购的十家公司
网易澄清:与暴雪合资公司仅提供技术支持
杰克逊悼念仪式或成史上最大规模Web活动
相关链接:
<
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
(15)
php
(7)
JavaScript
(5)
C#
(4)
Internet Explorer
(4)
C++
(3)
IE
(3)
CSS
(3)
java
(3)
Firefox
(3)
更多
随笔分类
(32)
.NET(3)
(rss)
Assembly(1)
(rss)
C#(2)
(rss)
C/C++(2)
(rss)
HTML/CSS(6)
(rss)
Java
(rss)
JavaScript(6)
(rss)
Lua
(rss)
php(5)
(rss)
Widgets & Gadgets(7)
(rss)
随笔档案
(29)
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)
最新随笔
1. 使用163镜像在线安装CentOS
2. 令人痛苦的SyncML同步协议错误
3. C#中从WSDL文件生成Web 服务
4. 有图有真相,百度屏蔽网站行为仍在继续
5. [转]CSS Hacks
6. 浏览器功能一览:IE曾经垃圾,现在垃圾,将来仍然很垃圾
7. 三步实现 OpenSearch 功能
8. 学习笔记
9. 使用 Java 正则表达式解析 VCard
10. 校内网 BT 的用户协议
11. IE NetRenderer 简单试用 :请勿上当
12. C# 2008 中调用非托管 dll 问题(序):参考材料
13. 代码小技巧:一键切换
14. [转]php + Oracle 实现分页
15. Google App Engine, 我来了!
积分与排名
积分 - 7863
排名 - 5441
最新评论
1. re: 有图有真相,百度屏蔽网站行为仍在继续
--引用-------------------------------------------------- aierong: 给点钱 --------------------------------...
--一人行
2. re: 有图有真相,百度屏蔽网站行为仍在继续
给点钱
--aierong
3. re: 校内网 BT 的用户协议
中国网站都这样的
--垃圾21
4. re: 三步实现 OpenSearch 功能
挺有用的技术,感谢分享
--斯克迪亚
5. re: 三步实现 OpenSearch 功能
有什么用?
--痴情客
阅读排行榜
1. 三步实现 OpenSearch 功能(1225)
2. CSS Hacks : 修复 IE 的 Padding 错误(550)
3. ExtJS 和 smarty 配套使用时出现的奇怪现象(已解决)(543)
4. OpenSocial API 概述(511)
5. Google Gadgets (1):从Hello World开始(498)
评论排行榜
1. 代码小技巧:一键注释(5)
2. 校内网 BT 的用户协议(3)
3. ExtJS 和 smarty 配套使用时出现的奇怪现象(已解决)(3)
4. 三步实现 OpenSearch 功能(2)
5. 有图有真相,百度屏蔽网站行为仍在继续(2)
60天内阅读排行
1. C#中从WSDL文件生成Web 服务(146)
2. 令人痛苦的SyncML同步协议错误(26)
3. 使用163镜像在线安装CentOS(5)