zoukankan      html  css  js  c++  java
  • PHP获取汉字首字母函数

    首字母很重要,可以进行排序使用。
    城市列表等等。

    <?php
    function getFirstCharter($str)
    {
        if (empty($str)) {
            return '';
        }
        
        $fchar = ord($str{0});
        
        if ($fchar >= ord('A') && $fchar <= ord('z'))
            return strtoupper($str{0});
        
        $s1 = iconv('UTF-8', 'gb2312', $str);
        
        $s2 = iconv('gb2312', 'UTF-8', $s1);
        
        $s = $s2 == $str ? $s1 : $str;
        
        $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
        
        if ($asc >= -20319 && $asc <= -20284)
            return 'A';
        
        if ($asc >= -20283 && $asc <= -19776)
            return 'B';
        
        if ($asc >= -19775 && $asc <= -19219)
            return 'C';
        
        if ($asc >= -19218 && $asc <= -18711)
            return 'D';
        
        if ($asc >= -18710 && $asc <= -18527)
            return 'E';
        
        if ($asc >= -18526 && $asc <= -18240)
            return 'F';
        
        if ($asc >= -18239 && $asc <= -17923)
            return 'G';
        
        if ($asc >= -17922 && $asc <= -17418)
            return 'H';
        
        if ($asc >= -17417 && $asc <= -16475)
            return 'J';
        
        if ($asc >= -16474 && $asc <= -16213)
            return 'K';
        
        if ($asc >= -16212 && $asc <= -15641)
            return 'L';
        
        if ($asc >= -15640 && $asc <= -15166)
            return 'M';
        
        if ($asc >= -15165 && $asc <= -14923)
            return 'N';
        
        if ($asc >= -14922 && $asc <= -14915)
            return 'O';
        
        if ($asc >= -14914 && $asc <= -14631)
            return 'P';
        
        if ($asc >= -14630 && $asc <= -14150)
            return 'Q';
        
        if ($asc >= -14149 && $asc <= -14091)
            return 'R';
        
        if ($asc >= -14090 && $asc <= -13319)
            return 'S';
        
        if ($asc >= -13318 && $asc <= -12839)
            return 'T';
        
        if ($asc >= -12838 && $asc <= -12557)
            return 'W';
        
        if ($asc >= -12556 && $asc <= -11848)
            return 'X';
        
        if ($asc >= -11847 && $asc <= -11056)
            return 'Y';
        
        if ($asc >= -11055 && $asc <= -10247)
            return 'Z';
        
        return null;
        
    }
    
    
    $firstChar = getFirstCharter('你好');
    print_r($firstChar);
    
    output:N
    ?>
    
  • 相关阅读:
    arcgis要素折点转点
    arcgis问题数据判断
    arcgis根据位置信息查找一个点周围的线(根据交点,查找)
    GIS算法-最短路径-连通性-网络分析-路径规划
    Arcgis直连SQLServer数据库,通过REST修改数据ArcMap中更新数据库数据不更新,数据不统一
    None和NULL
    ArcPy属性查询
    WGS84转gcj02
    ArcGIS Server跨域
    MySQL中数据类型宽度有什么用, INT(11)有什么意义?
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5194653.html
Copyright © 2011-2022 走看看