다국적으로 지원되는 웹 사이트를 구축 할 때는 종종 다른 지역에 따라 페이지의 특정 문구 나 태그를 교체해야합니다. MB_EREGI_REPLACE () 함수는 PHP에서 다중 바이트 문자 친화적 인 일반적인 교체 함수이며, 유니 코드 텍스트, 특히 비 라틴 문자 (예 : 중국어, 일본어, 아랍어 등)를 포함하는 언어를 처리하는 데 적합합니다.
이 기사는 MB_EREGI_REPLACE () 함수를 사용하여 국제화 프로젝트의 특정 언어로 문구를 균일하게 대체하고 실제 예와 함께 사용하는 방법을 소개하는 방법을 소개합니다.
MB_EREGI_REPLAET () 는 PHP Multibyte String Extension (MBString)의 함수이며, 사례에 민감한 정기적 인 교체를 수행합니다. 표준 eregi_replace () 와 유사하지만 UTF-8 인코딩을 지원하며 국제 시나리오에 적합합니다.
구문은 다음과 같습니다.
string mb_eregi_replace(string $pattern, string $replacement, string $string [, string $option])
$ 패턴 : 일치하는 정규 표현.
$ 교체 : 교체에 사용되는 문자열.
$ string : 교체를 수행 할 소스 문자열.
$ 옵션 : (선택 사항) 인코딩을 지정합니다 (예 : "UTF-8").
자리 표시 자나 문구가 포함 된 템플릿 문자열이 있다고 가정 해 봅시다. 현재 로케일 (예 : en , Zh , FR )에 따라 해당 언어의 내용으로 대체해야합니다.
다음과 같이 간단한 템플릿 문자열을 설정하십시오.
$template = "방문에 오신 것을 환영합니다[SITE_NAME],클릭하십시오[LINK]더 많은 정보를 얻으십시오。";
이제 Locale에 따르면 [site_name] 및 [링크]를 다른 언어 값으로 바꾸려고합니다.
$phrases = [
'zh' => [
'SITE_NAME' => 'M66웹 사이트',
'LINK' => '<a href="https://m66.net/zh/about">여기</a>'
],
'en' => [
'SITE_NAME' => 'M66 Site',
'LINK' => '<a href="https://m66.net/en/about">here</a>'
]
];
function localize_template($template, $language, $phrases) {
foreach ($phrases[$language] as $key => $value) {
// 사용 mb_eregi_replace 교체하십시오
$template = mb_eregi_replace('\[' . $key . '\]', $value, $template, 'UTF-8');
}
return $template;
}
$language = 'zh';
echo localize_template($template, $language, $phrases);
산출:
방문에 오신 것을 환영합니다M66웹 사이트,클릭하십시오<a href="https://m66.net/zh/about">여기</a>더 많은 정보를 얻으십시오。
성능 : MB_EREGI_REPLAE () 다중 바이트 문자와 케이스에 민감한 일치를 처리하기 때문에 많은 양의 텍스트를 처리 할 때 성능이 일반 str_replace () 만큼 좋지 않을 수 있습니다. 필요에 따라 선택하십시오.
탈출 문자 : 대상의 정사각형 괄호 [] 는 일반 표현의 특수 문자이며, 백 슬래시로 탈출해야합니다. 그렇지 않으면 일치가 실패하게됩니다.
인코딩 일관성 : 모든 문자열이 UTF-8을 사용하여 인코딩하고 혼합 인코딩으로 인해 교체 고장이 발생할 수 있습니다.
보다 복잡한 국제화 프로젝트에서는 언어 처리 모듈로 위의 방법을 캡슐화 할 수 있습니다. 언어 처리 모듈은 템플릿 파일을 일괄하고 언어 패키지 파일과 함께 동적 교체를 구현하는 데 사용됩니다. 처리 효율을 향상시키기 위해 캐시 메커니즘과 결합 할 수도 있습니다.
예를 들어, 해당 언어 패키지는 언어 디렉토리 구조에 따라로드 할 수 있습니다.
$language_file = __DIR__ . "/lang/{$language}.php";
if (file_exists($language_file)) {
$phrases = include $language_file;
}
MB_EREGI_REPLACE () 는 국제화 프로젝트에서 매우 실용적인 텍스트 교체 도구이며, 특히 멀티 파이트 문자가 포함 된 문자열을 처리하는 데 적합합니다. 유연하게 사용하면 템플릿 레이어에서 언어 문구를 동적으로 교체하여 실제 다국어 지원 시스템을 구축 할 수 있습니다. 통합 문구 라이브러리와 템플릿 엔진을 사용하면 전체 국제 아키텍처가 효율적이고 유지 관리가 쉬워집니다.