php判斷字符串編碼並統一轉換爲utf8並檢測亂碼去除

 /**
     * 編碼轉換+轉換後中文亂碼直接去除方法
     * @param $data
     * @return string
     */
    public function getUtf8str($data){
        $encode = mb_detect_encoding($data, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5','EUC-CN'));
        if($encode != 'UTF-8'){
            $data = mb_convert_encoding($data, 'UTF-8', $encode);
        }
        $str = "";
        for($n = 0; $n < strlen($data);)
        {
            $s = substr($data, $n, 1);
            $v = ord($s);
            if($v >= 127)
            {
                ++$n;
                $cnt = 0;
                $tmp = $v;
                while($tmp & 0x80)
                {
                    $tmp = $tmp << 1;
                    ++$cnt;
                }
                $x = 0;
                while($x < $cnt && $n < strlen($data))
                {
                    $s = substr($data, $n, 1);
                    if((ord($s) & 0xC0) == 0x80)
                    {
                        ++$n;
                        ++$x;
                    }else{
                        break;
                    }

                }
                if($x + 1 == $cnt) {
                    $str  = $str . substr($data, $n - $cnt, $cnt);
                }else{
                    while($n < strlen($data))
                    {
                        $s = substr($data, $n, 1);
                        if(ord($s) & 0x80)
                        {
                            ++$n;
                        }else{
                            break;
                        }
                    }
                }
            }else{
                $str = $str. $s;
                ++$n;
            }
        }
        return  $str;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章