현재 위치: > 최신 기사 목록> 문자열 반전 작동에서 MB_GET_INFO 인코딩 지원

문자열 반전 작동에서 MB_GET_INFO 인코딩 지원

gitbox 2025-05-11

다중 바이트 문자열 (예 : UTF-8 인코딩 중국어, 일본어, 한국 등)을 처리 할 때 일반 문자열 함수는 종종 문자의 경계를 올바르게 식별하지 못하여 작동 결과가 잘못되었습니다. 리버스 스트링 작업을 수행 할 때 특히 그렇습니다. 이 기사는 MB_GET_INFO () 를 통해 멀티 바이트 문자열의 인코딩 정보를 얻는 방법을 살펴보고 다른 MB_SERIES 기능을 결합하여 문자열의 올바른 역전을 달성합니다.

다중 바이트 문자열의 도전

STRREV () 와 같은 PHP의 내장 기능은 ASCII 문자 만 처리 할 수 ​​있으며, 다중 바이트 문자 (예 : 중국어의 "You"와 같은 UTF-8의 3 바이트)에 대해 바이트 바이트로 바이트 바이트를 역전시켜 코드가 나옵니다. 예:

 $str = "안녕하세요,세계";
echo strrev($str); // 출력 갈색 코드

그 이유는 strrev ()가 "문자"가 얼마나 많은 바이트인지 알지 못하기 때문입니다.

해결책 : MBString 기능을 사용하십시오

PHP의 MBString Extension은 멀티 바이트 스트링을 처리하는 기능 모음을 제공합니다. MB_GET_INFO ()를 사용하여 현재 멀티 파이트 구성을 확인하고 MB_STRLEN ()MB_SUBSTR ()을 결합하여 안전한 문자열 반전을 달성 할 수 있습니다.

1. 현재 멀티 바이트 환경을 얻으십시오

 $info = mb_get_info();
print_r($info);

내부 인코딩 ( Internal_encoding ), HTTP 입력/출력 인코딩 등을 포함한 배열이 반환됩니다.

 Array
(
    [internal_encoding] => UTF-8
    [http_input] => pass
    [http_output] => pass
    ...
)

2. 문자열 반전 함수

현재 인코딩 정보를 기반으로 문자열을 안전하게 반전시킬 수 있습니다.

 function mb_strrev($str, $encoding = null) {
    if ($encoding === null) {
        $encoding = mb_internal_encoding();
    }
    
    $length = mb_strlen($str, $encoding);
    $reversed = '';
    
    for ($i = $length - 1; $i >= 0; $i--) {
        $reversed .= mb_substr($str, $i, 1, $encoding);
    }
    
    return $reversed;
}

$str = "안녕하세요,세계";
echo mb_strrev($str); // 산출:세계,좋아요

이 예에서는 MB_INTERNAL_ENCODING () ( MB_GET_INFO () 가 제공 한 내부_encoding 필드에 의해 결정됨)을 사용하여 올바른 문자 인코딩이 사용되도록합니다.

동적 인코딩 지원

다른 소스 (예 : 사용자 업로드)의 문자열을 처리하는 경우 인코딩이 균일하지 않을 수 있습니다. mb_convert_encoding () 과 결합하여 mb_detect_encoding ()을 사용하여 변환 할 수 있습니다.

 $str = file_get_contents('https://gitbox.net/data.txt');
$encoding = mb_detect_encoding($str, mb_detect_order(), true);

if ($encoding !== 'UTF-8') {
    $str = mb_convert_encoding($str, 'UTF-8', $encoding);
}

echo mb_strrev($str);

이러한 방식으로, 사용자가 GB2312, BIG5 또는 UTF-8 인코딩 된 텍스트를 업로드하든 통합 인코딩으로 변환 한 다음 반전 될 수 있습니다.

요약

MB_GET_INFO () 자체는 문자열 반전 작업에 직접 참여하지는 않지만 중요한 인코딩 정보를 제공하여 적절한 MB_Function 매개 변수를 선택할 수 있습니다. mb_strlen ()mb_substr ()를 결합하여 인코딩을 올바르게 얻고 설정함으로써 멀티 바이트 스트링을 안전하고 안정적으로 반전시킬 수 있습니다.

이는 국제적으로 적용하거나, 사용자 입력을 처리하거나 아시아 시장을위한 시스템을 구축 할 때 특히 중요합니다. 이러한 프로젝트를 구축하는 경우 MBString 확장을 활성화하고 항상 인코딩 된 정보의 획득 및 사용에주의하십시오.