php中获取中文首字母程序代码
我们经常会看到一些网站按城市名来分或按字母来排名,下面我就来介绍这个东西如何实现的吧,我们分享一段利用php取得中文字符串中第一个汉字的字母,代码如下:
- <?php
- $limit = array(
- array(45217,45252),
- array(45253,45760),
- array(45761,46317),
- array(46318,46825),
- array(46826,47009),
- array(47010,47296),
- array(47297,47613),
- array(47614,48118),
- array(0,0),
- array(48119,49061),
- array(49062,49323),
- array(49324,49895),
- array(49896,50370),
- array(50371,50613),
- array(50614,50621),
- array(50622,50905),
- array(50906,51386),
- array(51387,51445),
- array(51446,52217),
- array(52218,52697),
- array(0,0),
- array(0,0),
- array(52698,52979),
- array(52980,53688),
- array(53689,54480),
- array(54481,55289),
- );
-
- $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,$i,2))));
- printf("%c",$t==-1 ? '*' : $t );
-
- $i+=2;
- }
- else{
- printf("%s",substr($str,$i,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;
- }
- ?>
就是根据中文拼音来判断它的ascii码的编码来算出的.
|