用PHP提取中英文单词和数字
最近的项目有一个要求提取大量词汇的汉语和英语的每个单词的首字母(包括阿拉伯数字0-9)。小甘-> G
免费>
2b
愚蠢的x - S
复制代码代码如下所示:
私有函数getfirstchar($ S0){
$ S = iconv('utf-8 ','gb2312,$ S0);
如果(ORD($ S0)> 128){ / /汉字开始
$ ASC = ORD($的{ 0 })* 256 + ORD($的{ 1 })- 65536;
如果(20319和20284)返回;
如果(20283和19776)返回B;
如果(19775和19219)返回;
如果(19218和18711),返回d;
如果(18710和18527)返回e;
如果(18526和18240)返回f;
如果(18239和17923)返回G;
如果($ = = 17922和$ < = 17418)返回i;
如果($ = = 17417和$ < = 16475)返回j ;
如果(16474和16213)返回;
如果(16212和15641)返回;
如果(15640和15166),返回m;
如果(15165和14923)返回n;
如果(14922和14915)返回O;
如果(14914和14631)返回;
如果(14630和14150)返回;
如果(14149和14091),返回r;
如果(14090和13319),返回s;
如果(13318和12839),返回T;
如果($ = = 12838和$ < = 12557)返回w ;
如果($ = = 12556和$ < = 11848)返回x;
如果(11847和11056)返回y;
如果(11055和10247)返回;
} else if(ORD(美元的)> = 48和ORD(美元的)< = 57){ / /数字
开关(iconv_substr($,0,1,'utf-8 '))
{
案例1:返回Y;
案例2:返回e;
案例3:返回s;
案例4:返回s;
案例5:返回W;
案例6:返回L;
案例7:返回q;
案例8:返回B;
案例9:返回j;
案例0:返回L;
}
} else if(ORD(美元的)> = 65和ORD(美元的)< = 90){ / /英文大写开头
返回substr($,0,1);
} else if(ORD(美元的)> = 97和ORD(美元的)< = 122){ / /小写英文开始
返回strtoupper(substr($,0,1));
}
其他的
{
返回iconv_substr(s0,0,1美元,'utf-8 '); / /英文混合的话,不适合以上所有,所以可以直接提取的第一个字符
}
}
问题:还有几句话是无法提取的,比如G提取了牢不可破的,从而永恒。
最终结果如下: