用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读注册表
Oct 09 PHP
PHP的开合式多级菜单程序
Oct 09 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
深入分析PHP设计模式
Jun 15 PHP
PHP扩展安装方法步骤解析
Nov 24 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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
php网页病毒清除类
2014/12/08 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
asp 的 分词实现代码
2007/05/24 Javascript
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
angularjs基础教程
2014/12/25 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
使用python 获取进程pid号的方法
2014/03/10 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
医学院护理专业应届生求职信
2013/11/12 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
中秋寄语大全
2014/04/11 职场文书
水利水电专业自荐信
2014/07/08 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
js Proxy的原理详解
2021/05/25 Javascript
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
Python 如何实现文件自动去重
2021/06/02 Python