用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与SQL注入攻击[二]
Apr 17 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
PHP中JSON的应用技巧
Oct 10 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
详细分析PHP 命名空间(namespace)
Jun 30 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
php中rename函数用法分析
2014/11/15 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
JavaScript动态生成表格的示例
2020/11/02 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
详解python字节码
2018/02/07 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
django session完成状态保持的方法
2018/11/27 Python
django 信号调度机制详解
2019/07/19 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python中and和or如何使用
2020/05/28 Python
python上selenium的弹框操作实现
2020/07/13 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
开业庆典嘉宾致辞
2015/08/01 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python