用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 相关文章推荐
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
Symfony生成二维码的方法
Feb 04 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
PHP sdk实现在线打包代码示例
Dec 09 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的计数器程序
2006/10/09 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
python笔记(2)
2012/10/24 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python实现数字炸弹游戏程序
2020/07/17 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
电气技术员岗位职责
2013/11/19 职场文书
银行批评与自我批评
2014/02/10 职场文书
保险专业求职信
2014/07/07 职场文书
布达拉宫的导游词
2015/02/02 职场文书
通讯稿范文
2015/07/22 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android