UTF-8 감지함수

PHP 2009. 5. 15. 14:26



http://kr2.php.net/mb_detect_encoding 이 페이지의 댓글 중
hmdker at gmail dot com <- 이 사람의 댓글에 있던 함수.


단점이랄 것도 없지만
검사할 문자열이 ASCII 내에 속하는 문자만으로 이루어진 문자열일 경우 UTF-8 이라고 리턴함.
코드를 보면 알겠지만 UTF-8 인코딩의 바이트마다의 특성을 가지고 검사하는 것이므로.



function is_utf8($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;
}









참고 1. UTF-8 문자 바이트를 확인할 수 있는 곳 (http://www.utf8-chartable.de/unicode-utf8-table.pl)
   => 원래라면 http://www.unicode.org/charts 이곳에서 확인하는게 FM이긴 하지만 pdf 파일로 되어있어 불편함






'PHP' 카테고리의 다른 글

[PHP] ImageMagick  (0) 2009.05.29
PHP에서 tif 파일을 jpg 로 변환하기  (0) 2009.05.28
PHP Application을 가장 빠르게  (0) 2009.05.15
URLEncode Code Chart  (0) 2009.05.15
lock 걸고 파일 쓰기  (2) 2009.05.10
Posted by bloodguy
,