php檢測字符串編碼(utf-8,gbk,gb2312)是否爲utf8編碼的方法總結

檢測一個字符串是否爲utf8編碼的方法總結,總共總結了四種方法:

方法一

    function mb_is_utf8($string)   
    {   
        return mb_detect_encoding($string, 'UTF-8') === 'UTF-8';//新發現   
    }  


方法二

    function preg_is_utf8($string)   
    {   
        return preg_match('/^.*$/u', $string) > 0;//preg_match('/^./u', $string)   
    }  


方法三
    function is_utf8_1($str)   
    {   
        $c=0; $b=0;   
        $bits=0;   
        $len=strlen($str);   
        for($i=0; $i<$len; $i++){   
            $c=ord($str[$i]);   
            if($c > 128){   
                if(($c >= 254)) return false;   
                elseif($c >= 252) $bits=6;   
                elseif($c >= 248) $bits=5;   
                elseif($c >= 240) $bits=4;   
                elseif($c >= 224) $bits=3;   
                elseif($c >= 192) $bits=2;   
                else return false;   
                if(($i+$bits) > $len) return false;   
                while($bits > 1){   
                    $i++;   
                    $b=ord($str[$i]);   
                    if($b < 128 || $b > 191) return false;   
                    $bits--;   
                }   
            }   
        }   
        return true;   
    }  

方法四


    function is_utf8_2($string) {   
      
        // From http://w3.org/International/questions/qa-forms-utf-8.html   
        return preg_match('%^(?:  
              [\x09\x0A\x0D\x20-\x7E]            # ASCII  
            | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte  
            |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs  
            | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte  
            |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates  
            |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3  
            | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15  
            |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16  
        )*$%xs', $string);   
      
    } // function is_utf8  

方法五
    function isUTF8($string)   
    {   
        return (utf8_encode(utf8_decode($string)) == $string);   
    }  


轉載自http://www.itokit.com/2011/0529/66328.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章