用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 相关文章推荐
FleaPHP的安全设置方法
Sep 15 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP函数超时处理方法
Feb 14 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 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多进程编程实例详解
2017/07/19 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
python3 读取Excel表格中的数据
2018/10/16 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
采购员岗位职责
2013/11/15 职场文书
国旗下的演讲稿
2014/05/08 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android