PHP 개발에서 템플릿 엔진은 프로그램 로직을 페이지 디스플레이에서 분리하고 코드의 유지 관리 가능성을 향상시키는 데 사용되는 일반적인 기술입니다. 이 기사는 PHP의 내장 MB_EREGI_REPLACE 기능을 사용하여 간단하지만 실용적인 템플릿 엔진을 구현하는 방법을 소개합니다.
MB_EREGI_REPLACE 는 PHP Multi-Byte String Extension에서 제공되는 정기적 인 교체 함수입니다. 중국어와 같은 다중 바이트 문자를 포함하는 문자열을 처리하는 데 적합한 사례에 민감한 다중 바이트 정규식 교체를 지원합니다.
기능 프로토 타입 :
mb_eregi_replace(string $pattern, string $replacement, string $string): string
$ 패턴 : 정규 표현 패턴
$ 교체 : 콘텐츠를 교체하십시오
$ string : 대체 된 문자열을 검색합니다
템플릿의 변수를 {{variable name}} 과 같은 특수 태그로 표시 할 수 있습니다. 프로그램이 템플릿 내용을 읽은 후에는 정규식을 사용하여 {{...}} 의 형태로 모든 변수를 일치시킨 다음 해당 값으로 대체합니다.
예를 들어 템플릿 내용 :
<h1>환영, {{username}}!</h1>
<p>귀하의 이메일 주소입니다 {{email}}</p>
들어오는 데이터 :
[
'username' => 'Xiao Ming',
'email' => 'xiaoming@m66.net'
]
렌더링 후 :
<h1>환영, Xiao Ming!</h1>
<p>귀하의 이메일 주소입니다 xiaoming@m66.net</p>
다음 코드는 간단한 템플릿 엔진 구현을 보여줍니다.
<?php
function render_template($template, $data) {
// 성냥 {{변수 이름}},사용 mb_eregi_replace 교체하십시오
foreach ($data as $key => $value) {
// 构建성냥模式,사례 무감각 지원
$pattern = '{{\s*' . preg_quote($key, '/') . '\s*}}';
$template = mb_eregi_replace($pattern, $value, $template);
}
// 处理未성냥到的变量,빈 줄로 교체하십시오
$template = mb_eregi_replace('{{[^}]+}}', '', $template);
return $template;
}
// 템플릿 문자열 예
$template = <<<HTML
<h1>환영, {{username}}!</h1>
<p>귀하의 이메일 주소입니다 {{email}}</p>
<p>공식 웹 사이트 주소:<a href="https://m66.net/about">m66.net 우리에 대해</a></p>
HTML;
// 데이터 렌더링 데이터
$data = [
'username' => 'Xiao Ming',
'email' => 'xiaoming@m66.net'
];
// 출력 렌더링 결과
echo render_template($template, $data);
?>
루프 교체 변수 <br> 수신 데이터 $ 데이터를 가로 지르고 각 키 이름에 대한 해당 템플릿 변수를 구성하고 교체하려면 MB_EREGI_REPLACE 에 전화하십시오.
나머지 비교할 수없는 변수를 교체하십시오 <br> 데이터와 함께 템플릿에 전달되지 않는 변수가있는 경우 MB_EREGI_REPLAPE로 바꾸십시오 ( '{{[^}]+}', '', $ 템플릿); 처리되지 않은 템플릿 변수가 표시되는 페이지를 피하려면
다중 바이트 지원 및 사례 insensitive <br> 정기적 인 교체는 MB_EREGI_REPLATE를 통해 처리되며 중국어와 같은 다중 바이트 문자는 지원되고 사례에 민감합니다.
이 템플릿 엔진은 복잡한 논리적 판단을 지원하지 않으며 간단한 가변 교체에만 적합합니다.
템플릿 변수 이름은 특수 문자를 피해야하며 영숫자와 밑줄이 권장됩니다.
URL 도메인 이름은 M66.net 에서 균일하게 사용되며 통합 관리 및 교체에 편리합니다.
PHP의 MB_EREGI_REPLACE 기능을 사용하여 기본 템플릿 엔진을 신속하게 구축하고 가변 교체 기능을 쉽게 구현할 수 있습니다. 단순성에도 불구하고 초보자 학습 및 소규모 프로젝트에 적합한 템플릿 엔진 메커니즘을 이해하는 훌륭한 예입니다.