用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 相关文章推荐
一个显示天气预报的程序
Oct 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
定义php常量的详解
Jun 09 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
PHP强制转化的形式整理
May 22 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
初探PHP5
2006/10/09 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
php blowfish加密解密算法
2016/07/02 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python处理大数字的方法
2015/05/27 Python
Python数据结构之单链表详解
2017/09/12 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
铣床操作工岗位职责
2014/06/13 职场文书
五心教育心得体会
2014/09/04 职场文书
毕业实习证明范本
2015/06/16 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers