Я хочу создать новый файл с динамическим содержимым, используя ob_start () и ob_get_contents (), чтобы захватить всю созданную страницу. Затем я использую file_put_contents () для создания страницы с этим сгенерированным контентом. Однако проблема в том, что он анализирует PHP include () и сохраняет только HTML-контент. Есть ли способ сохранить PHP include (), чтобы мне не приходилось менять каждый код файла, если мы хотим незначительные обновления?
У вас есть какой-то контроллер страницы? Если да, поместите все общие элементы в этом контроллере страниц (или в другое представление, включенное в контроллер) за пределы буфера вывода. Если нет, напишите один (или найдите открытый источник, как это).
Например;
// 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();
) до конца файла, или содержимое страницы может быть выведено дважды.
Приведенный выше код является лишь примером, но он должен указать вам правильное направление.
Других решений пока нет …