현재 위치: > 최신 기사 목록> 다국어 텍스트에서 가변 태그의 동적 교체

다국어 텍스트에서 가변 태그의 동적 교체

M66 2025-05-14

다국어 응용 프로그램을 개발할 때는 종종 동적 변수를 템플릿에 삽입해야합니다. PHP는이 교체 기능을 구현하는 여러 가지 방법을 제공합니다. 여기서 preg_replace_callback_array는 특히 텍스트가 여러 언어를 지원하고 다른 변수를 포함 해야하는 경우 복잡한 텍스트로 태그를 동적으로 대체하는 매우 강력한 도구입니다.

1. preg_replace_callback_array 란 무엇입니까?

preg_replace_callback_array 는 php의 정규식 대체 함수입니다. 콜백 기능으로 대체 작업을 동적으로 처리 할 수 ​​있습니다. 정상적인 preg_replace 와 달리 preg_replace_callback_array는 여러 다른 일반 패턴을 처리하고 각 패턴에 대한 해당 콜백 기능을 정의 할 수 있으므로 복잡한 텍스트 교체를 처리 할 때 매우 유용합니다.

문법

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject): string
  • $ patterns_and_callbacks : 이것은 연관 배열이며, 배열의 키는 정규식 패턴이며 값은 콜백 함수입니다.

  • $ 제목 : 대상 문자열을 교체합니다.

2. 다국어 텍스트에서 preg_replace_callback_array를 사용하십시오

다국어를 지원하고 다양한 언어로 가변 태그를 동적으로 교체 해야하는 응용 프로그램을 개발하고 있다고 가정합니다. 텍스트 템플릿에 두 가지 변수가 포함되어 있다고 가정하면 {username}{email}을 사용하면 preg_replace_callback_array를 사용하여 이러한 변수의 값을 동적으로 대체 할 수 있습니다.

샘플 코드

 // 사용자 정보 시뮬레이션
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// 언어 템플릿을 정의하십시오
$template = "환영, {username}! 귀하의 이메일입니다: {email}";

// 일반 모드 및 콜백 기능의 매핑
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// 사용preg_replace_callback_array교체하십시오
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

위 코드에서 먼저 사용자 정보가 포함 된 배열 $ 사용자를 정의합니다. 그런 다음 다국어 텍스트를 포함하는 $ 템플릿 문자열이 정의되며, 여기에는 두 개의 변수 레이블 {username}{email} 이 포함됩니다. 다음으로, 우리는 연관 배열 $ patterns_and_callbacks를 통해 정규 표현 패턴 및 콜백 함수를 매핑하고 마지막으로 preg_replace_callback_array 함수를 사용하여 대체 작업을 수행합니다.

출력 결과 :

 환영, JohnDoe! 귀하의 이메일입니다: john@example.com

3. preg_replace_callback_array를 사용하여 다국어 지원을 구현하십시오

실제 응용 프로그램에서는 사용자의 언어 선택에 따라 다른 언어 템플릿을 동적으로로드해야합니다. preg_replace_callback_array를 사용하면 템플릿의 변수를 다국어 배열로 동적으로 바꿀 수 있습니다.

샘플 코드 : 다른 언어로 텍스트를 동적으로로드합니다

 // 사용자 언어를 시뮬레이션하십시오
$lang = 'zh';

// 다국어 템플릿
$translations = [
    'en' => "Welcome, {username}! Your email is: {email}",
    'zh' => "환영, {username}! 귀하의 이메일입니다: {email}",
];

// 사용자 정보
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// 현재 언어의 템플릿을 선택하십시오
$template = $translations[$lang];

// 일반 모드 및 콜백 기능의 매핑
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// 사용preg_replace_callback_array교체하십시오
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

이 예에서는 먼저 사용자의 언어 선택에 따라 해당 템플릿 텍스트를로드합니다. 그런 다음 가변 교체는 이전과 같이 일반 및 콜백 기능을 통해 수행됩니다.

출력 결과 (중국어가 선택되었다고 가정) :

 환영, JohnDoe! 귀하의 이메일입니다: john@example.com

4. URL의 도메인 이름을 교체하십시오

때로는 특히 환경의 도메인 이름이 변경 될 때 템플릿에서 URL의 도메인 이름을 동적으로 교체해야 할 수도 있습니다. 예를 들어, 개발 중에 다른 URL을 사용하고 나중에 생산 환경으로 전환 해야하는 경우 preg_replace_callback_array를 사용하여 URL의 도메인 이름을 동적으로 교체 할 수 있습니다.

샘플 코드 : URL 도메인 이름을 대체하십시오

 // 사용자 정보 시뮬레이션
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// 템플릿에는 포함됩니다 URL
$template = "당사 웹 사이트를 방문하십시오: https://www.old-domain.com/profile/{username}";

// 일반 모드 및 콜백 기능의 매핑
$patterns_and_callbacks = [
    '/https?:\/\/(www\.[a-zA-Z0-9\-\.]+)\//' => function($matches) {
        return str_replace($matches[1], 'm66.net', $matches[0]);
    },
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
];

// 사용preg_replace_callback_array교체하십시오
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

출력 결과 :

 당사 웹 사이트를 방문하십시오: https://www.m66.net/profile/JohnDoe

이 예에서는 정규 표현식을 사용하여 URL과 일치하고 도메인 이름을 m66.net 으로 바꾸십시오. 이 작업을 통해 다른 환경에서 URL을 동적으로 조정할 수 있습니다.

5. 요약

preg_replace_callback_array 는 매우 유연하고 강력한 도구이며, 특히 가변 태그를 다국어 텍스트로 동적으로 교체 해야하는 시나리오에 적합합니다. 일반 표현식과 콜백 기능을 결합하면 복잡한 텍스트 교체 요구 사항을 쉽게 처리하여 동적로드 및 가변 교체를 지원하여 코드를보다 유연하고 유지 관리 할 수 ​​있습니다.