멀티 바이트 문자열 처리에 PHP를 사용할 때 MB_EREGI_REPLACE 기능은 멀티 바이트 문자의 정기적 인 교체를 지원하고 케이스를 무시하는 매우 실용적인 도구입니다. 그러나이 기능을 사용할 때 많은 개발자들이 종종 코드 문제를 겪습니다. 이 기사에서는 거대한 코드의 원인을 깊이 분석하고 내부 문자 인코딩을 올바르게 설정하는 방법에 중점을 둡니다.
MB_EREGI_REPLACE 는 PHP의 다중 바이트 문자열 함수 중 하나입니다. 이 기능은 사례를 무시하는 정규 표현식 대체품을 수행하고 중국어, 일본어 및 한국과 같은 다중 바이트 캐릭터를 올바르게 처리 할 수 있습니다. 기능 프로토 타입은 다음과 같습니다.
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
그것을 사용할 때는 정규 표현식으로 전달되면 문자열과 대상 문자열을 교체하면됩니다.
Barridbled 코드는 일반적으로 문자 인코딩 불일치와 관련이 있습니다. mb_eregi_replace는 현재 설정된 내부 문자 인코딩에 따라 문자열을 처리합니다. 문자열 인코딩 및 내부 인코딩이 일치하지 않으면 구문 분석 오류가 발생하여 코드가 나옵니다.
예를 들어, 소스 문자열이 UTF-8 인코딩이지만 내부 인코딩이 ISO-8859-1로 설정되면 함수는 바이트를 잘못 구문 분석하고 출력이 차단됩니다.
PHP의 Multibyte String 함수는 mb_internal_encoding () 함수를 사용하여 내부 문자 인코딩을 얻고 설정합니다. 이 인코딩이 문자열 인코딩과 일치하는지 확인해야합니다. UTF-8은 현재 가장 일반적인 인코딩이기 때문에 일반적으로 권장됩니다.
샘플 코드 :
<?php
// 내부 문자 인코딩을 설정하십시오 UTF-8
mb_internal_encoding("UTF-8");
$subject = "이것은 테스트 문자열입니다,한자가 포함되어 있습니다";
$pattern = "시험";
$replacement = "예";
$result = mb_eregi_replace($pattern, $replacement, $subject);
echo $result;
?>
내부 인코딩이 설정되지 않은 경우 MB_EREGI_REPLACE는 기본적으로 시스템 인코딩을 사용할 수 있으므로 문자열 구문 분석 오류 및 차량 코드가 발생할 수 있습니다.
입력 문자열의 인코딩 확인 : 입력 문자열이 실제로 UTF-8인지 또는 설정 한 인코딩인지 확인하십시오. 그렇지 않으면 mb_convert_encoding ()을 사용하는 것과 같은 인코딩을 먼저 변환하십시오.
정규 표현식의 인코딩을 지정 하십시오 .
단일 바이트 및 다중 바이트 함수를 혼합하지 마십시오 : EREG 와 MB_EREGI_REPLACE를 혼합하면 비 호환성 문제가 발생할 수 있습니다.
문제가있는 경우 문제를 설정하거나 잘못 설정하는 것을 잊어 버릴 가능성이 높습니다. 솔루션은 MB_INTERNAL_ENCODING ( "UTF-8") (또는 문자열이 실제로 인코딩)을 사용하여 모든 문자열 작업이 동일한 인코딩 환경에서 수행되도록하는 것입니다. 이렇게하면 차량 코드의 문제를 피하고 다중 바이트 정규 교체에 MB_EREGI_REPLAPE를 사용합니다.
전체 코드 샘플 :