用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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
php提示undefined index的几种解决方法
May 21 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 PHP
PHP接入支付宝接口失效流程详解
Nov 10 PHP
用php如何解决大文件分片上传问题
Jul 07 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的远程图片抓取函数分享
2013/09/25 PHP
PHP中的Memcache详解
2014/04/05 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
解析js原生方法创建表格效率测试
2013/07/08 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中的Numpy入门教程
2014/04/26 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
程序集与命名空间有什么不同
2014/07/25 面试题
2013年学期结束动员演讲稿
2014/01/07 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
感恩的演讲稿
2014/05/06 职场文书
职务说明书范文
2014/05/07 职场文书
保护环境倡议书500字
2014/05/19 职场文书
激励员工的口号
2014/06/16 职场文书
工作目标责任书
2014/07/23 职场文书
信用卡工作证明模板
2014/09/14 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
公司经营目标责任书
2015/01/29 职场文书
干部考核工作总结
2015/08/12 职场文书
Java 写一个简单的图书管理系统
2022/04/26 Java/Android
SQL Server删除表中的重复数据
2022/05/25 SQL Server