用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 adodb操作mysql数据库
Mar 19 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
php随机显示图片的简单示例
Feb 15 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
php输入数据统一类实例
Feb 23 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
php 使用 __call实现重载功能示例
Nov 18 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实现的MySQL通用查询程序
2007/03/11 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
详解php反序列化
2020/06/10 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
Python操作SQLite简明教程
2014/07/10 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python常用算法学习基础教程
2017/04/13 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
关于赌博的检讨书
2014/01/08 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
商场消防演习方案
2014/02/12 职场文书
信息技术教学反思
2014/02/12 职场文书
致100米运动员广播稿
2014/02/14 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP