Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP – mb_detect_encoding()을 사용하여 문자 인코딩을 감지하는 방법

<시간/>

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"