Я создал простой шаблон «движок» в PHP для замены сгенерированных PHP данных на HTML-страницу. Вот как это работает:
В моем основном файле шаблона у меня есть переменные, такие как:
<title><!-- %{title}% --></title>
Затем я назначаю данные в эти переменные для загрузки главной страницы
$assign = array (
'title' => 'my website - '
);
У меня есть отдельные блоки шаблонов, которые загружаются для страниц контента. Вышесказанное действительно обрабатывает верхний и нижний колонтитулы. В одном из этих «файлов шаблонов контента» у меня есть переменные вроде:
<!-- %{title=content page}% -->
Как только это будет выполнено, данные основного шаблона будут отредактированы для включения переменных страницы содержимого, что приведет к:
<title>my website - content page</title>
Это делается с помощью следующего кода:
if (preg_match('/<!-- %{title=\s*(.*?)}% -->/s', $string, $matches)) {
// Find variable names in the form of %{varName=new data to append}%
// If found, append that new data to the exisiting data
$string = preg_replace('/<!-- %{title=\s*(.*?)}% -->/s', null, $string);
$varData[$i] .= $matches[1];
}
Это в основном удаляет переменные шаблона и затем присваивает данные переменной существующей переменной. Теперь все это прекрасно работает. У меня проблемы с вложением шаблонных переменных. Если я сделаю что-то вроде:
<!-- %{title=content page (author: <!-- %{name}% -->) -->
Временами шаблон путает открывающий и закрывающий теги каждой переменной.
Как я могу исправить свое регулярное выражение, чтобы предотвратить это?
Спасибо.