PHP의 MBString Extension은 멀티 바이트 문자열을 다룰 때 많은 실용적인 기능을 제공합니다. 그 중에서 MB_GET_INFO () 및 MB_DETECT_ENCODING ()는 종종 초보자에 의해 혼란스러워집니다. 그것들은 모두 다중 바이트 캐릭터 인코딩과 관련이 있지만 완전히 다른 기능을 가지고 있습니다. 오늘 우리는 그들의 차이점과 해당 시나리오를 신중하게 검토 할 것입니다.
MB_GET_INFO () 는 현재 MBString 환경의 구성 정보를 얻는 데 사용되는 기능입니다. 기본 내부 인코딩, HTTP 입력/출력 인코딩, 현재 언어 설정 등과 같은 인코딩 설정에 대한 자세한 내용을 알려줄 수 있습니다.
mb_get_info(string $type = null): array|string|false
<?php
// 모든 구성 정보를 얻으십시오
$info = mb_get_info();
print_r($info);
// 현재 내부 코드를 얻으십시오
$internalEncoding = mb_get_info("internal_encoding");
echo "내부 코드는입니다: " . $internalEncoding;
?>
달리기의 결과는 다음과 같습니다 (부분).
Array
(
[internal_encoding] => UTF-8
[http_output] => UTF-8
[http_input] => pass
[language] => neutral
...
)
현재 기본 인코딩이 UTF-8인지 확인하려는 것과 같은 특정 항목에만 관심이있는 경우이 기능은 매우 편리합니다.
mb_detect_encoding () 은 또 다른 방법으로 문자열의 인코딩을 추측하는 데 사용됩니다. 이 도구는 사용자가 업로드 한 파일, 양식 데이터 또는 크롤러가 찍은 웹 컨텐츠와 같이 알려지지 않은 소스에서 문자열을받을 때 매우 유용한 도구입니다.
mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false
<?php
// 웹 페이지를 크롤링한다고 가정 해 봅시다
$content = file_get_contents("https://gitbox.net/page.html");
// 인코딩을 감지하십시오
$encoding = mb_detect_encoding($content, ["UTF-8", "GBK", "ISO-8859-1"]);
echo "감지 된 인코딩은입니다: " . $encoding;
?>
또한 엄격한 모드가 인코딩을보다 엄격하게 일치 시키도록 활성화 할 수 있습니다.
$encoding = mb_detect_encoding($content, ["UTF-8", "GBK"], true);
기능적 요점 | mb_get_info () | mb_detect_encoding () |
---|---|---|
효과 | 인코딩 환경 구성을 얻으십시오 | 문자열의 실제 인코딩을 감지하십시오 |
매개 변수 | 선택적 매개 변수는 반환 내용을 결정합니다 | 문자열을 전달해야하며 인코딩 목록을 선택할 수 있습니다. |
반환 유형 | 배열 또는 문자열 | 문자열 또는 거짓 |
응용 프로그램 시나리오 | 인코딩 설정, 디버깅을 확인하십시오 | 알려지지 않은 인코딩 문자열을 결정하십시오 |
입력 컨텐츠와의 관계 | 콘텐츠를 입력 할 필요가 없습니다 | 문자열 내용이 제공되어야합니다 |
보다 간단한 비유는 다음과 같습니다.
mb_get_info () : php에 대해 지금 어떻게 설정 했습니까?
mb_detect_encoding () : 이 문자열의 인코딩은 무엇입니까?
나는 mb_get_info가 당신에게 문자열 인코딩을 말할 수 있다고 잘못 생각했다.
그것은 당신에게 PHP의 현재 인코딩 설정 만 알려주고 당신이주는 문자열을 인코딩하는 것을 인식하지 못합니다.
인코딩 목록을 지정하지 않고 감지하십시오.
기본적으로 mb_detect_encoding ()은 내부 인코딩 순서를 사용합니다. 후보 인코딩 범위를 명확하게 알고 있다면 수동으로 전달하는 것이 가장 좋습니다. 이는 정확도와 성능을 향상시킬 수 있습니다.
UTF-8이 기본적으로 사용되는지 여부와 같이 PHP가 현재 인코딩을 설정하는 방법을 알고 싶다면 mb_get_info ()를 사용하십시오.
gitbox.net 에서 잡은 html 조각과 같이 식별되지 않은 인코딩 된 텍스트가있는 경우 mb_detect_encoding ()을 사용하여 UTF-8, GBK 등 여부를 결정해야합니다.
두 기능은 서로를 보완하고 자신의 의무를 수행합니다. 그것들을 명확하게 이해 한 후에는 사용하기가 매우 쉽습니다.