我们经常会看到一些网站按城市名来分或按字母来排名,下面我就来介绍这个东西如何实现的吧,我们分享一段利用php取得中文字符串中第一个汉字的字母,代码如下:
<?php $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,0), //U array(0,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,$i,2)))); printf("%c",$t==-1 ? '*' : $t ); //开源代码phprm.com $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码的编码来算出的.
本文地址:
转载随意,但请附上文章地址:-)