最近项目有个需求,在一个中英文(包括阿拉伯数字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 if($asc>=-20283 and $asc if($asc>=-19775 and $asc if($asc>=-19218 and $asc if($asc>=-18710 and $asc if($asc>=-18526 and $asc if($asc>=-18239 and $asc if($asc>=-17922 and $asc if($asc>=-17417 and $asc if($asc>=-16474 and $asc if($asc>=-16212 and $asc if($asc>=-15640 and $asc if($asc>=-15165 and $asc if($asc>=-14922 and $asc if($asc>=-14914 and $asc if($asc>=-14630 and $asc if($asc>=-14149 and $asc if($asc>=-14090 and $asc if($asc>=-13318 and $asc if($asc>=-12838 and $asc if($asc>=-12556 and $asc if($asc>=-11847 and $asc if($asc>=-11055 and $asc }else if(ord($s)>=48 and ord($s) 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) return substr($s,0,1);
}else if(ord($s)>=97 and ord($s) return strtoupper(substr($s,0,1));
}
else
{
return iconv_substr($s0,0,1,'utf-8');//中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可
}
}
遗留问题:仍有少量词语无法提取,如亘古不灭,的G 没有提取出来
最终效果如图:
http://www.bkjia.com/PHPjc/326814.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326814.htmlTechArticle最近项目有个需求,在一个中英文(包括阿拉伯数字0-9)的海量词库中,提取每一个词语的首字母: gannicus——G 自由自在——Z 2B——E 傻...
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn