Multibyte 현을 처리 할 때 PHP는 MBString 확장을 제공하여 문자 인코딩이 올바르게 구문 분석되도록합니다. 정규 표현식은 또한 설정을 인코딩하여 영향을받을 수 있습니다. 특히 UTF-8, Shift-Jis 또는 EUC-JP와 같은 멀티 바이트 인코딩 된 텍스트를 처리 해야하는 경우. 다행스럽게도 PHP는 MB_REGEX_ENCODING () 및 MB_GET_INFO () 기능을 제공하여 개발자가 일반 표현식의 인코딩 설정을 관리 할 수 있도록 도와줍니다.
mb_regex_encoding () 함수는 현재 멀티 바이트 정규 표현식에 사용되는 인코딩을 설정하거나 가져올 수 있습니다.
문법:
mb_regex_encoding(?string $encoding = null): string|bool
매개 변수가 전달되지 않으면 현재 인코딩을 반환합니다.
인코딩 매개 변수가 전달되면 정규 표현식의 인코딩을 설정하고 이전 인코딩을 반환합니다.
MB_GET_INFO ()는 언어, 내부 인코딩, HTTP 입력/출력 인코딩 및 정규식 인코딩 등을 포함한 현재 MBString 환경의 세부 구성 정보를 얻는 데 사용됩니다.
용법:
mb_get_info(?string $type = null): array|string|false
$ 유형이 'regex_encoding' 으로 설정되면 현재 사용되는 인코딩을 반환합니다.
다음은 MB_REGEX_ENCODING ()을 사용하여 정기 인코딩을 설정하는 방법을 보여주는 완전한 예입니다. MB_GET_INFO () 를 통해 설정이 효과적인지 확인하십시오.
<?php
// 사용하도록 정규 표현식을 설정하십시오 UTF-8 코딩
$previousEncoding = mb_regex_encoding('UTF-8');
echo "原本的正则表达式코딩为:$previousEncoding\n";
// 验证当前正则表达式코딩是否为 UTF-8
$currentRegexEncoding = mb_get_info('regex_encoding');
echo "当前的正则表达式코딩为:$currentRegexEncoding\n";
// 정규 일치 샘플
$pattern = '\A[\p{Hiragana}ー]+\z'; // 히라 가나 캐릭터와 일치합니다
$subject = 'こんにちは';
if (mb_ereg($pattern, $subject)) {
echo "성공적으로 일치합니다:$subject 히라 가나 텍스트입니다\n";
} else {
echo "경기가 실패했습니다:$subject 히라가나 규칙을 준수하지 않습니다\n";
}
?>
위의 예에서 :
먼저 정규식 인코딩을 UTF-8로 설정했습니다.
그런 다음 mb_get_info ()를 사용하여 설정을 확인하십시오.
그런 다음 mb_ereg ()를 사용하여 유니 코드 속성과 일치합니다.
PHP 설치에 MBString Extension이 활성화되어 있고 일반 유니 코드 모드를 지원하십시오.
적절한 인코딩을 사용하여 여러 언어, 특히 중국어, 가명 또는 기타 특수 문자와 관련된 콘텐츠를 다룰 때는 정기적으로 일치하는 결과를 피하거나 부정확 한 결과를 피할 수 있습니다. 현재 텍스트 인코딩을 지원하지 않는 정규 표현식을 사용하는 경우 일치하는 실패 또는 오류가 발생하기 쉽습니다.
Q : 정규 표현식의 인코딩을 명시 적으로 설정하지 않으면 기본값은 무엇입니까? A : 기본 내부 문자 인코딩이 사용되지만 ( mb_internal_encoding () 에 의해 설정 됨)이지만 특정 값은 시스템 환경에 따라 다를 수 있으므로 명시 적으로 설정하는 것이 좋습니다.
Q : PHP가 MBString을 지원하는지 확인하는 방법은 무엇입니까? A : phpinfo ()를 실행하거나 extension_loaded ( 'mbstring')를 사용하여 확인할 수 있습니다.