美文网首页
获取中文首字母

获取中文首字母

作者: 可望不可j | 来源:发表于2021-07-26 17:26 被阅读0次

/**

* 获取中文首字母(中英文会返回对应的首字母,数字直接返回,若是负数,转正数返回)

* @param $str

* @param $type  true|返回大写字母  false|返回小写字母

* @return string|null

*/

function getFirstCharter($str,$type=true){

    if(empty($str)) {

        return '';

    }

    if(trim($str)==''){

        return '';

    }

    if(is_numeric($str)){

        return abs($str);

    }

    //如果不是中文 不是英文 也不是数字 直接返回 空值

    if(!preg_match("/^[\x7f-\xff]+$/", $str) && !preg_match("/^[A-Za-z]+$/",$str) && !is_numeric($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;

    $str = '';

    if($asc>=-20319&&$asc<=-20284){

        $str = "A";

    }

    if($asc>=-20283&&$asc<=-19776 || $asc==-9743){

        $str = "B";

    }

    if($asc>=-19775&&$asc<=-19219){

        $str = "C";

    }

    if($asc>=-19218&&$asc<=-18711 || $asc==-9767){

        $str = "D";

    }

    if($asc>=-18710&&$asc<=-18527){

        $str = "E";

    }

    if($asc>=-18526&&$asc<=-18240){

        $str = "F";

    }

    if($asc>=-18239&&$asc<=-17923){

        $str = "G";

    }

    if($asc>=-17922&&$asc<=-17418){

        $str = "H";

    }

    if($asc>=-17417&&$asc<=-16475){

        $str = 'J';

    }

    if($asc>=-16474&&$asc<=-16213){

        $str = 'K';

    }

    if($asc>=-16212&&$asc<=-15641 || $asc==-7182 || $asc==-6928 ){

        $str = 'L';

    }

    if($asc>=-15640&&$asc<=-15166){

        $str = 'M';

    }

    if($asc>=-15165&&$asc<=-14923){

        return 'N';

    }

    if($asc>=-14922&&$asc<=-14915){

        return 'O';

    }

    if($asc>=-14914&&$asc<=-14631 || $asc==-6745){

        return 'P';

    }

    if($asc>=-14630&&$asc<=-14150 || $asc==-7703){

        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';

    }

    if($type){

        return $str;

    }else{

        return strtolower($str);

    }

}

相关文章

网友评论

      本文标题:获取中文首字母

      本文链接:https://www.haomeiwen.com/subject/imyngktx.html