현재 위치: > 최신 기사 목록> 간단한 템플릿 엔진을 구현하는 데 사용됩니다

간단한 템플릿 엔진을 구현하는 데 사용됩니다

M66 2025-05-18

PHP에서 preg_replace_callback_array 함수는 일반 표현식 및 콜백 함수를 기반으로 텍스트를 처리 할 수있는 강력한 도구입니다. 이 기능을 영리하게 활용함으로써 변수와 로직을 HTML 템플릿에 쉽게 포함시키는 간단한 템플릿 엔진을 구현할 수 있습니다.

이 기사에서는 preg_replace_callback_array를 사용하여 간단한 템플릿 엔진을 구현하는 방법을 설명 하며이 기능을 사용하여 템플릿에서 자리 표시자를 교체하는 방법을 보여줍니다.

1. preg_replace_callback_array 란 무엇입니까?

preg_replace_callback_array 는 PHP의 함수로 정규식 기반 교체 작업을 수행하고 각 일치하는 정규 표현식에 대해 콜백 함수를 지정할 수 있습니다. 콜백 함수는 일치하는 컨텐츠에 따라 사용자 정의 할 수 있으며 최종 교체 결과를 반환 할 수 있습니다.

기능 프로토 타입은 다음과 같습니다.

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
  • $ patterns_and_callbacks : 키가 일반 표현식이고 값이 콜백 함수 인 배열.

  • $ 제목 : 처리 할 문자열.

2. 간단한 템플릿 엔진을 만듭니다

템플릿의 변수를 대체하고 간단한 조건부 로직을 지원하는 간단한 템플릿 엔진을 만들 것입니다. preg_replace_callback_array를 사용하면이 기능을 쉽게 구현할 수 있습니다.

1. 템플릿과 변수를 준비하십시오

템플릿의 자리 표시자가 {{}} 에 싸여있는 간단한 HTML 템플릿이 있다고 가정합니다.

 $template = "<h1>환영,{{name}}!</h1><p>{{message}}</p>";
$variables = [
    'name' => '장 산',
    'message' => '다음은 간단한 템플릿 엔진 예제입니다。',
];

2. 교체 규칙을 정의하십시오

우리는 preg_replace_callback_array를 사용하여 자리 표시 자 교체 규칙을 정의합니다. 우리는 두 가지 주요 작업을 처리해야합니다.

  1. 변수 (예 : {{name}} )를 실제 값으로 바꾸십시오.

  2. 조건에 따라 다른 컨텐츠 표시와 같은 사용자 정의 로직을 처리합니다.

이러한 기능을 구현하려면 적절한 정규 표현식을 구성하고 각 정규 표현식에 대한 콜백 함수를 지정해야합니다.

3. 템플릿 엔진을 구현하십시오

다음은 템플릿 엔진을 구현하는 PHP 코드입니다.

 <?php

$template = "<h1>환영,{{name}}!</h1><p>{{message}}</p>";
$variables = [
    'name' => '장 산',
    'message' => '다음은 간단한 템플릿 엔진 예제입니다。',
];

// 사용 preg_replace_callback_array 템플릿 엔진을 구현하십시오
$patterns_and_callbacks = [
    '/{{(.*?)}}/' => function ($matches) use ($variables) {
        $key = $matches[1];
        return isset($variables[$key]) ? $variables[$key] : '';
    },
];

$output = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $output;

4. 코드 파싱

  • $ patterns_and_callbacks 배열은 템플릿의 자리 표시 자와 일치하는 정규 표현식 / (예 : {{name}} )와 일치합니다.

  • 일치하는 각 자리 표시 자에 대해 콜백 함수를 통해 $ 변수 배열의 실제 값으로 교체합니다. 해당 변수를 찾을 수없는 경우 콜백 함수는 빈 문자열을 반환합니다.

5. 확장 기능 : 조건부 논리

템플릿 엔진을 더 강력하게 만들기 위해 특정 조건에 따라 특정 컨텐츠를 표시할지 여부를 결정하는 것과 같은 조건부 명세서에 대한 지원을 추가 할 수 있습니다. 이 함수를 구현하기 위해 {{if 조건}} 과 유사한 구문을 사용할 수 있습니다.

다음은 템플릿에서 간단한 조건부 판단을 사용하는 방법을 보여주는 예입니다.

 <?php

$template = "<h1>환영,{{name}}!</h1>{{if show_message}}<p>{{message}}</p>{{endif}}";
$variables = [
    'name' => '장 산',
    'message' => '다음은 간단한 템플릿 엔진 예제입니다。',
    'show_message' => true, // 메시지 표시 여부를 제어합니다
];

// 사용 preg_replace_callback_array 템플릿 엔진을 구현하십시오
$patterns_and_callbacks = [
    '/{{(.*?)}}/' => function ($matches) use ($variables) {
        $key = $matches[1];
        return isset($variables[$key]) ? $variables[$key] : '';
    },
    '/{{if (.*?)}}(.*?){{endif}}/s' => function ($matches) use ($variables) {
        $condition = $matches[1];
        $content = $matches[2];
        // 조건과 판사를 분석하십시오
        if (isset($variables[$condition]) && $variables[$condition]) {
            return $content;
        }
        return '';
    },
];

$output = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $output;

6. 코드 파싱

  • 새로운 정규 표현식 /{{if (.*?)}} (.*?) {{endif}} /s는 조건 문과 일치하도록 추가됩니다.

  • 콜백 함수는 {{if 조건}} 의 조건이 true인지 확인합니다. true 인 경우 {{message}} 이 표시됩니다. 거짓이라면 아무것도 표시되지 않습니다.

3. 결론

preg_replace_callback_array를 통해 템플릿에서 가변 교체 및 조건부 판단을 처리하는 매우 간단한 템플릿 엔진을 구현할 수 있습니다. 이 엔진은 매우 기본적이지만 정규 표현식 및 콜백 기능을 사용하여 템플릿 엔진의 핵심 기능을 구현하는 방법을 보여줍니다. 루프, 필터, 매크로 정의 등과 같이이 기준으로보다 복잡한 기능을 확장하고보다 강력한 템플릿 엔진을 구축 할 수 있습니다.