php 取得字符串的首字母适用于中文字符串

PHP取得字符串的首字母(适用于中文字符串)感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!

/**
 * PHP取得字符串的首字母(适用于中文字符串)
 *
 * @param 
 * @arrange 网: www.www.jb51.cc
 **/
$limit = array( //gb2312 拼音排序
	array(45217,45252),//A
	array(45253,45760),//B
	array(45761,46317),//C
	array(46318,46825),//D
	array(46826,47009),//E
	array(47010,47296),//F
	array(47297,47613),//G
	array(47614,48118),//H
	array(0,0),//I
	array(48119,49061),//J
	array(49062,49323),//K
	array(49324,49895),//L
	array(49896,50370),//M
	array(50371,50613),//N
	array(50614,50621),//O
	array(50622,50905),//P
	array(50906,51386),//Q
	array(51387,51445),//R
	array(51446,52217),//S
	array(52218,52697),//T
	array(0,//U
	array(0,//V
	array(52698,52979),//W
	array(52980,53688),//X
	array(53689,54480),//Y
	array(54481,55289),//Z
);
$str=A:这是一个测试程序1;
$str= iconv(UTF-8,gb2312,$str);
echo $str.</br>;
$i=0;
while($i<strlen($str) ) {
	$tmp=bin2hex(substr($str,$i,1));
	if($tmp>='B0'){ //汉字的开始
		$t=getLetter(hexdec(bin2hex(substr($str,2))));
		printf(%c,$t==-1 ? '*' : $t );
		$i+=2;
	}
	else{
		printf(%s,substr($str,1));
		$i++;
	}
}
function getLetter($num){
	global $limit;
	$char_index=65;
	foreach($limit as $k=>$v){
		if($num>=$v[0] && $num<=$v[1]){
			$char_index+=$k;
			return $char_index;
		}
	}
	return -1;
}
/***   来自编程之家 jb51.cc(jb51.cc)   ***/

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...