PHP 提取中文字首字母踩坑

前言

接手的项目需要做一个中文首字母的模糊查询匹配功能

踩坑

百度一下,网上很多帖子的实现思路都和下面链接思路一样

【PHP原生】获取字符串所有汉字首字母和首个汉字首字母

刚开始以为可以投机取巧,直接将别人的代码拿来就用。

刚开始是美滋滋的,可是后面在使用过程中发现有部分文字的首字母识别不出来。

然后去细究代码,然后发现是作者实现思路里面包含的中文识别根本不全,只有一部分,连GB2312编码表的中文字都涵盖不全

填坑

没办法,BUG怎么也得修,是伐。搞一轮编码表,整理出如下区间

     * 根据GB2312的编码表
     * B0A0 - B0C4       A
     * B0C5 - B2C0       B
     * B2C1 - B4ED       C
     * B4EE - B6EA       D
     * B6EB - B7A0       E
     * B7A1 - B8C0       F
     * B8C1 - B9FE       G
     * B9FF - BBF6       H
     * BBF7 - BFA4       J
     * BFA5 - C0AB       K
     * C0AC - C2E7       L
     * C2E8 - C4C2       M
     * C4C3 - C5B5       N
     * C5B6 - C5BD       O
     * C5BE - C6D9       P
     * C6DA - C8BA       Q
     * C8BB - C8F5       R
     * C8F6 - CBFA       S
     * CBFB - CDDA       T
     * CDDB - CEF3       W
     * CEF4 - D1B8       X
     * D1B9 - D4D0       Y
     * D4D1 - D7FA       Z

整理完发现,在D7FA之后的,仍有部分中文字,整理之后,发现不是后面中文的字母都不是连续的,故而放弃整理区位码的方式。

接着百度,发现一个在线汉语词典网站,测试了一下,发现该网站可以直接将中文翻译成拼音,而且效率奇快。F12跟进分析,找到该网站的字库文件

该字库支持中文字转换全拼音,但是项目只需要用到首字母,然后下载回来,用Python整理一下对应的数据格式,插入数据库,后面PHP里面要翻译直接’like ’ 模糊查询数据库便可。Python在整理格式的时候,顺便统计了一下字数,该字库文件包含20850个中文字,而GB2312编码表只有6763个中文字,初步估计,字库文件里面的中文字应该能满足日常使用。

PS:“人生苦短,我用Python”,这话一点不假

抛砖引玉

考虑过直接将对应的字符串贴到PHP页面里面,然后用字符串查找的方式,但是字库整理过后的大小也有41K,不知道贴到PHP页面里面,会不会影响效率。如有知悉的小伙伴,留言告诉我吧~~灰常感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值