멀티 바이트 스트링을 다룰 때 MBString 확장은 PHP에 대한 강력한 지원을 제공합니다. 그 중에서 MB_GET_INFO ()는 MBString 의 내부 설정 상태를 얻는 데 매우 실용적인 기능입니다. 그러나 많은 개발자들은 사용 중에 반품 결과를 해석하기가 어렵거나 반품이 비어있는 등 약간의 혼란에 직면하게됩니다.이 기사에서는 MB_GET_INFO ()를 디버그하는 방법을 체계적으로 이해하고 일반적인 문제에 대한 자세한 솔루션을 제공하는 방법을 체계적으로 이해하게됩니다.
MB_GET_INFO () 는 PHP MBString Extension의 함수이며 현재 멀티 바이트 스트링 환경 설정 정보를 얻습니다. 세 가지 용도가 있습니다.
// 모든 설정 정보를 얻으십시오
$info = mb_get_info();
// 지정된 항목을 가져옵니다
$encoding = mb_get_info("internal_encoding");
// 현재 인코딩 설정을 가져옵니다
$current_encoding = mb_get_info("encoding");
반환 된 데이터는 일반적으로 연관 배열이며 내용은 다음과 같습니다.
Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[input_encoding] => UTF-8
[output_encoding] => UTF-8
[language] => neutral
[encoding_translation] => Off
)
PHP가 MBString 이로드되어 있는지 확인하려면 다음 명령을 실행하십시오.
if (function_exists('mb_get_info')) {
echo "mbstring 활성화";
} else {
echo "mbstring 활성화되지 않았습니다";
}
반환 mbstring이 활성화되지 않은 경우 php.ini 에서 확장자를 활성화해야합니다.
extension=mbstring
그런 다음 PHP 서비스를 다시 시작하십시오.
때로는 인코딩 설정 전후에 변경 사항을 확인해야 할 수도 있습니다.
echo "초기 정보:\n";
print_r(mb_get_info());
mb_internal_encoding("ISO-8859-1");
mb_http_output("UTF-8");
echo "수정 된 정보:\n";
print_r(mb_get_info());
이 비교 프로세스는 설정이 실제로 적용되는지 여부를 위치시키는 데 도움이됩니다.
실제 응용 프로그램에서는 후속 분석을 위해 로그에 반환 값을 기록 할 수 있습니다.
file_put_contents("/var/log/mbstring_debug.log", print_r(mb_get_info(), true));
가능한 이유 :
MBString 확장 기능이 활성화되지 않았습니다
PHP를 컴파일 할 때 -enable-mbstring 매개 변수가 추가되지 않았습니다
해결책:
mbstring 모듈이 포함되어 있는지 확인하려면 php.ini 또는 run phpinfo ()를 확인하십시오.
다음 명령을 사용하여 PHP를 다시 컴파일합니다 (소스 코드 설치 용) :
./configure --enable-mbstring
make && make install
encoding_translation은 입력/출력 인코딩 변환이 활성화되어 있는지 여부를 나타냅니다. 기본값은 상태가 꺼져 있으며 MB_OUTPUT_HANDLER ()를 사용하면 자동으로 활성화 될 수 있습니다.
개방 방법은 다음과 같습니다.
output_handler = mb_output_handler
또는 코드에서 활성화 :
ob_start("mb_output_handler");
인코딩을 설정 한 후 MB_GET_INFO () 가 반환 한 값이 변경되지 않은 경우 설정 범위가 올바르지 않을 수 있습니다.
mb_internal_encoding("UTF-8"); // 옳은:내부 인코딩을 설정합니다
ini_set("default_charset", "UTF-8"); // 출력에만 영향을 미칩니다
두 기능은 다르며 사용하면 구별해야합니다.
다국어 문자를 처리하는 웹 사이트와 같은 실제 프로젝트에서는 초기화 구성 파일에 다음 코드를 추가 할 수 있습니다.
mb_internal_encoding("UTF-8");
mb_http_input("UTF-8");
mb_http_output("UTF-8");
mb_language("uni");
if (isset($_GET['debug_mb'])) {
echo "<pre>";
print_r(mb_get_info());
echo "</pre>";
}
이러한 방식으로 https://gitbox.net/index.php?debug_mb=1 에 액세스하면 손쉬운 디버깅을 위해 현재 MBString 구성 정보를 빠르게 얻을 수 있습니다.
MB_GET_INFO () 는 PHP Multibyte String 환경을 이해하고 디버깅하기위한 필수 도구입니다. 이 기사의 설명을 통해 이미 사용 방법을 마스터하고 일반적인 문제를 신속하게 찾아서 해결할 수 있다고 생각합니다. 국제화 및 캐릭터 인코딩 변환과 같은 민감한 시나리오를 다루는 데있어 가장 신뢰할 수있는 조수가 될 것입니다.
PHP 코딩 기술에 대한 자세한 내용은 공식 문서를 방문하거나 개발자 커뮤니티에 가입 할 수 있습니다 : https://gitbox.net/docs/mbstring .