PHP 字元轉拼音首字iconv 警告錯誤

airland發表於2021-09-09

今天發現以前常用的iconv('UTF-8','gbk',$str);報警告錯誤
Notice: iconv(): Detected an illegal character in input string
發現原先使用gb2312編碼解析範圍不夠廣,某些字無法轉譯成功,換成gbk後可正常使用

public static 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','gbk',$str);
        $s2=iconv('gbk','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 '#';
    }



作者:Lucus的隨筆
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/964/viewspace-2816575/,如需轉載,請註明出處,否則將追究法律責任。

相關文章