用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开发需要注意的安全问题
Sep 01 PHP
php 注释规范
Mar 29 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
php异常处理捕获错误整理
Sep 23 PHP
php上传后台无法收到数据解决方法
Oct 28 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时间不正确的解决方法
2008/04/09 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
php生成短网址示例
2014/05/05 PHP
php显示时间常用方法小结
2015/06/05 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
Python 描述符(Descriptor)入门
2016/11/20 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
如何用python整理附件
2018/05/13 Python
flask-restful使用总结
2018/12/04 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
python requests使用socks5的例子
2019/07/25 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
制冷与电控专业应届生求职信
2013/11/11 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
最新离婚协议书范本
2014/08/19 职场文书
国防教育标语
2014/10/08 职场文书
2014年行政工作总结
2014/11/19 职场文书
保研导师推荐信
2015/03/25 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
vue ref如何获取子组件属性值
2022/03/31 Vue.js
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang