首页 > Web开发 > 详细

php - 获取中文字符拼音首字母ASCII

时间:2020-01-11 23:36:16      阅读:131      评论:0      收藏:0      [点我收藏+]

场景:对中文字符串进行排序

<?php

class demo
{
    public function __construct()
    {

    }

    /**
     * @todo 获取中文字符串的字符首字母ascii
     * @param $string
     * @param int $default_length
     * @return float|int
     */
    public function chinese_alphabet_ascii($string, $default_length = 3)
    {
        $number = 0;
        for ($i = 0; $i < $default_length; $i++) {
            $number = $number * 100 + $this->chinese_initials(mb_substr($string, $i, $i + 1));
        }

        for ($j = mb_strlen($string); $j < $default_length; $j++) {
            $number *= 100;
        }

        return $number;
    }

    /**
     * @todo 获取汉字拼音首字母 - ASCII
     * @param $character
     * @return int
     */
    private static function chinese_initials($character) {
        $ascii = ord($character);

        if ($ascii > 122) {
            $unicode = iconv("UTF-8", "GBK", $character);
            $ascii = ord($unicode{0}) * 256 + ord($unicode{1}) - 65536;
        }

        switch ($ascii) {
            // 0 ~ 9
            case $ascii >= 48 and $ascii <= 57 :
                $result_ascii = $ascii;
                break;
            // A ~ Z
            case $ascii >= 65 and $ascii <= 90 :
                $result_ascii = $ascii;
                break;
            // a ~ z
            case $ascii >= 97 and $ascii <= 122 :
                $result_ascii = $ascii - 32;
                break;
            // 汉字字母
            case $ascii >= -20319 and $ascii <= -20284:
                $result_ascii = 65;
                break;
            case $ascii >= -20283 and $ascii <= -19776:
                $result_ascii = 66;
                break;
            case $ascii >= -19775 and $ascii <= -19219:
                $result_ascii = 67;
                break;
            case $ascii >= -19218 and $ascii <= -18711:
                $result_ascii = 68;
                break;
            case $ascii >= -18710 and $ascii <= -18527:
                $result_ascii = 69;
                break;
            case $ascii >= -18526 and $ascii <= -18240:
                $result_ascii = 70;
                break;
            case $ascii >= -18239 and $ascii <= -17923:
                $result_ascii = 71;
                break;
            case $ascii >= -17922 and $ascii <= -17418:
                $result_ascii = 72;
                break;
            case $ascii >= -17417 and $ascii <= -16475:
                $result_ascii = 74;
                break;
            case $ascii >= -16474 and $ascii <= -16213:
                $result_ascii = 75;
                break;
            case $ascii >= -16212 and $ascii <= -15641:
                $result_ascii = 76;
                break;
            case $ascii >= -15640 and $ascii <= -15166:
                $result_ascii = 77;
                break;
            case $ascii >= -15165 and $ascii <= -14923:
                $result_ascii = 78;
                break;
            case $ascii >= -14922 and $ascii <= -14915:
                $result_ascii = 79;
                break;
            case $ascii >= -14914 and $ascii <= -14631:
                $result_ascii = 80;
                break;
            case $ascii >= -14630 and $ascii <= -14150:
                $result_ascii = 81;
                break;
            case $ascii >= -14149 and $ascii <= -14091:
                $result_ascii = 82;
                break;
            case $ascii >= -14090 and $ascii <= -13319:
                $result_ascii = 83;
                break;
            case $ascii >= -13318 and $ascii <= -12839:
                $result_ascii = 84;
                break;
            case $ascii >= -12838 and $ascii <= -12557:
                $result_ascii = 87;
                break;
            case $ascii >= -12556 and $ascii <= -11848:
                $result_ascii = 88;
                break;
            case $ascii >= -11847 and $ascii <= -11056:
                $result_ascii = 89;
                break;
            case $ascii >= -11055 and $ascii <= -10247:
                $result_ascii = 90;
                break;
            default:
                $result_ascii = 91;
        }
        return $result_ascii;
    }
}

php - 获取中文字符拼音首字母ASCII

原文:https://www.cnblogs.com/wsybky/p/12181523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!