用PHP提取中英文词语以及数字的首字母的方法介绍


Posted in PHP onApril 23, 2013

最近项目有个需求,在一个中英文(包括阿拉伯数字0-9)的海量词库中,提取每一个词语的首字母:

gannicus——>G

自由自在——>Z

2B——>E

傻X——>S

private function getfirstchar($s0){
        $s=iconv('UTF-8','gb2312', $s0);
        if (ord($s0)>128) { //汉字开头
            $asc=ord($s{0})*256+ord($s{1})-65536;
            if($asc>=-20319 and $asc<=-20284)return "A";
            if($asc>=-20283 and $asc<=-19776)return "B";
            if($asc>=-19775 and $asc<=-19219)return "C";
            if($asc>=-19218 and $asc<=-18711)return "D";
            if($asc>=-18710 and $asc<=-18527)return "E"; 
            if($asc>=-18526 and $asc<=-18240)return "F"; 
            if($asc>=-18239 and $asc<=-17923)return "G"; 
            if($asc>=-17922 and $asc<=-17418)return "I";              
            if($asc>=-17417 and $asc<=-16475)return "J";              
            if($asc>=-16474 and $asc<=-16213)return "K";              
            if($asc>=-16212 and $asc<=-15641)return "L";              
            if($asc>=-15640 and $asc<=-15166)return "M";              
            if($asc>=-15165 and $asc<=-14923)return "N";              
            if($asc>=-14922 and $asc<=-14915)return "O";              
            if($asc>=-14914 and $asc<=-14631)return "P";              
            if($asc>=-14630 and $asc<=-14150)return "Q";              
            if($asc>=-14149 and $asc<=-14091)return "R";              
            if($asc>=-14090 and $asc<=-13319)return "S";              
            if($asc>=-13318 and $asc<=-12839)return "T";              
            if($asc>=-12838 and $asc<=-12557)return "W";              
            if($asc>=-12556 and $asc<=-11848)return "X";              
            if($asc>=-11847 and $asc<=-11056)return "Y";              
            if($asc>=-11055 and $asc<=-10247)return "Z";  
        }else if(ord($s)>=48 and ord($s)<=57){ //数字开头
            switch(iconv_substr($s,0,1,'utf-8'))
            {
                case 1:return "Y";
                case 2:return "E";
                case 3:return "S";
                case 4:return "S";
                case 5:return "W";
                case 6:return "L";
                case 7:return "Q";
                case 8:return "B";
                case 9:return "J";
                case 0:return "L";
            }                
        }else if(ord($s)>=65 and ord($s)<=90){ //大写英文开头
            return substr($s,0,1);
        }else if(ord($s)>=97 and ord($s)<=122){ //小写英文开头
            return strtoupper(substr($s,0,1));
        }
        else
        {
            return iconv_substr($s0,0,1,'utf-8');//中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可
        }    }

遗留问题:仍有少量词语无法提取,如亘古不灭,的G 没有提取出来

最终效果如图:

用PHP提取中英文词语以及数字的首字母的方法介绍

PHP 相关文章推荐
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
php仿discuz分页效果代码
Oct 02 PHP
jQuery 源码分析笔记
May 25 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
php实现图片按比例截取的方法
Feb 06 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
laravel中短信发送验证码的实现方法
Apr 25 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 #PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 #PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 #PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 #PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 #PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 #PHP
php多文件上传功能实现原理及代码
Apr 18 #PHP
You might like
PHP学习之数组的定义和填充
2011/04/17 PHP
header导出Excel应用示例
2014/01/24 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
python实现计算资源图标crc值的方法
2014/10/05 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
python实现复制大量文件功能
2019/08/31 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
Shell如何接收变量输入
2016/08/06 面试题
财务管理专业自荐信范文
2013/12/24 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers