Как сохранить PHP include () при создании нового файла с помощью ob_get_contents () и file_put_contents ()

Я хочу создать новый файл с динамическим содержимым, используя ob_start () и ob_get_contents (), чтобы захватить всю созданную страницу. Затем я использую file_put_contents () для создания страницы с этим сгенерированным контентом. Однако проблема в том, что он анализирует PHP include () и сохраняет только HTML-контент. Есть ли способ сохранить PHP include (), чтобы мне не приходилось менять каждый код файла, если мы хотим незначительные обновления?

0

Решение

У вас есть какой-то контроллер страницы? Если да, поместите все общие элементы в этом контроллере страниц (или в другое представление, включенное в контроллер) за пределы буфера вывода. Если нет, напишите один (или найдите открытый источник, как это).

Например;

// Page controller
include 'path/to/Page.class.php';
$page->contentfile = getpage(); // get the filename of the page using the url string
$page->header = "..."; // header string
$page->footer = "..."; // footer string
ob_start();
include_once($page->contentfile);
$content = ob_get_contents();
ob_end_clean();

echo $pageobj->display($content);

В page.php вы можете установить заголовок и т. Д., Используя что-то вроде $page->title = '';и эти настройки будут запомнены в контроллере страницы.

Помните, что вам нужно очистить выходной буфер (ob_end_clean();) до конца файла, или содержимое страницы может быть выведено дважды.

Приведенный выше код является лишь примером, но он должен указать вам правильное направление.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]