• 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 );
            $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;
    }
    ?>

     获取任意字符串的首字母. 原理:根据gb2312编码是按拼音排序

  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/4073576.html
Copyright © 2020-2023  润新知