PHP에서 mb_detect_encoding() 문자 인코딩을 감지하는 데 사용됩니다. 정렬된 후보 목록에서 문자열에 대한 문자 인코딩을 감지할 수 있습니다. 이 기능은 PHP 4.0.6 이상 버전에서 지원됩니다.
mb_detect_encoding() 모든 바이트 시퀀스가 유효한 문자열을 형성하지 않는 멀티바이트 인코딩에 유용합니다. 입력 문자열에 이러한 유형의 시퀀스가 포함되어 있으면 해당 인코딩이 거부되고 다음 인코딩을 확인합니다.
구문
string mb_detect_encoding(str $string, str $encoding, bool $strcit)
문자 인코딩의 자동 감지는 몇 가지 추가 정보 없이는 완전히 신뢰할 수 없습니다. 문자 인코딩 감지는 키 없이 암호화된 문자열을 디코딩하는 것과 유사하다고 말할 수 있습니다. 콘텐츠 유형 HTTP 헤더는 데이터와 함께 저장되거나 전송되는 문자 인코딩 표시에 사용할 수 있습니다.
매개변수
mb_detect_encoding 함수는 세 개의 매개변수를 받아들입니다 -
-
$string − 이 매개변수는 검사 중인 문자열에 사용됩니다.
-
$인코딩 - 이 매개변수는 순서대로 시도할 문자 인코딩 목록에 사용됩니다. 목록은 문자열 배열 또는 쉼표로 구분된 단일 문자열과 같은 형식으로 지정할 수 있습니다. 인코딩이 생략되거나 null인 경우 현재 detect_order는 mbstring.detect_order로 설정됩니다. 구성 옵션 또는 mb_detect_order() 기능이 사용됩니다.
-
$strict - 이 매개변수는 문자열이 나열된 인코딩에서 유효하지 않을 때 동작을 제어하는 데 사용됩니다. strict가 false로 설정되면 가장 근접하게 일치하는 인코딩을 반환합니다. strict가 true로 설정되면 false를 반환합니다.
반환 값
감지된 문자 인코딩을 반환하거나 나열된 인코딩에서 문자열이 유효하지 않은 경우 False를 반환합니다.
예시 1
엄격한 매개변수가 없는 mb_detect_encoding() 함수
<?php $string=""; // It detect char encoding with current detect_order echo mb_detect_encoding($string); // auto is expanded according to mbstring.language echo mb_detect_encoding($string, "auto"); // Specify encodings echo mb_detect_encoding($string, "JIS, eucjp-win, sjis-win"); // Use array to specify "encodings" parameter $array_encoding = [ "ASCII", "JIS", "EUC-JP" ]; echo mb_detect_encoding($string, $array_encoding); ?>
출력
ASCIIASCIIJISASCII
예시 2
엄격한 매개변수를 사용하는 mb_detect_encoding() 함수.
<?php // 'áéóú' encoded in ISO-8859-1 $string = "\xxE11\xE9\xF3\xxFA"; // UTF-8 is considered a closer match var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], false)); var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], true)); //strict parameter does not change the result, if it finds a valid encoding var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], false)); var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], true)); ?>
출력
string(5) "UTF-8" bool(false) string(10) "ISO-8859-1" string(10) "ISO-8859-1"