Home > Backend Development > PHP Tutorial > Get Chinese initials program code in php_PHP tutorial

Get Chinese initials program code in php_PHP tutorial

WBOY
Release: 2016-07-20 11:11:44
Original
838 people have browsed it

We often see some websites sorted by city name or ranked by letters. Let me introduce how to implement this. Let's share a paragraph that uses PHP to obtain the first letter of a Chinese character in a Chinese string.

Example
The code is as follows
 代码如下 复制代码

$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."
";
$i=0;
while($i $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;
}
?>

Copy code

$limit = array( //gb2312 Pinyin sorting
array(45217,45252), //A
array(45253 ,45760), //B
array(45761,46317), //C
array(46318,46825), //D
array(46826,47009), //E< br /> array(47010,47296), //F
array(47297,47613), //G
array(47614,48118), //H
array(0,0 ; > 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: This is a test program 1";
$str= iconv("UTF-8","gb2312", $str);
echo $str. "
";
$i=0;
while($i $tmp=bin2hex(substr($str,$i, 1));
if($tmp>='B0'){ //The beginning of Chinese characters
$t=getLetter(hexdec(bin2hex(substr($str,$i,2)))) ;
                                                                                                                            > 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; />}
?> is calculated by judging the encoding of its ascii code based on Chinese pinyin.
http://www.bkjia.com/PHPjc/444630.html
www.bkjia.com
truehttp: //www.bkjia.com/PHPjc/444630.htmlTechArticleWe often see some websites ranked by city name or alphabetically. I will introduce this below How to implement this thing? Let’s share a paragraph using php to obtain the Chinese string number...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template