Как в шаблон вставить php-файл?

142
01 ноября 2021, 11:30

Используется простой шаблонизатор по типу:

$output = str_replace ("{TITLE}", $title, $template);
echo $output;

Как в шаблон вставить php-файл?

Answer 1

Как уже в комментах отмечено про буферизацию вывода, можете пойти примерно таким путем:

Включаемый файл (tpl.php) будет иметь примерно следующий вид

<?php    
    ob_start();
    echo "какой-то текст";   // тут весь выполняемый код и т.п.
    $result = ob_get_contents();    
    ob_clean();
    return $result;

начали буферизацию, выполнили код/хтмл и т.п. затем, все что в буфере вытолкнули в переменную, и буфер очистили. Переменную вернули из скрипта.

А вот вы в вызывающем файле как-то так

$tpl = include "./tpl.php";       // инклуд файла с резалтом в переменную
$output = str_replace ("{TITLE}", $title, $template);
$output = str_replace("{TPL}", $tpl, $output);  // и замена, как раньше.
echo $output;

Можете хоть регулярками реплейсить с колбеком

$template = <<<TPL
<body>
    {INC "tpl.php"}
    <br/>
    {INC "tpl.php"}
TPL;
echo "123";
$out = preg_replace_callback('/\{INC\s+"(?<file>.*?)"\}/', function($v){
                return include "./" . $v['file'];
            }, $template);
echo $out;
READ ALSO
Вирутальные функции

Вирутальные функции

Есть std::vector aТам содержатся как объекты типа A так и C

91
C++ cli альтернатива clock() (&quot;time.h)

C++ cli альтернатива clock() ("time.h)

Пытаюсь переписать код на C++ в VS2019 , но столкнулся с проблемой - библиотека "timeh" и "ctime" не поддерживается, а альтернативу clock() я сам найти не смог

159
C++ Проблема с if во внутреннем цикле

C++ Проблема с if во внутреннем цикле

Через считалку в строке выбираются люди в одномерном массиве и заносятся в очередьДо этого всё работало через остаток от целочисленного...

80
Почему выходит мусор?

Почему выходит мусор?

Вводить с клавиатуры целые числаУсловие окончания ввода  число 0

88