如何使用ob_get_contents()和file_put_contents()创建新文件时保留PHP include()

时间:2014-10-08 00:56:47

标签: php include ob-start

我想使用ob_start()和ob_get_contents()来创建包含动态内容的新文件,以获取整个创建的页面。然后我使用file_put_contents()来创建包含该生成内容的页面。但是,问题是,它解析PHP include()并仅存储HTML内容。有没有什么方法可以保留PHP include(),这样如果我们想要进行小的更新,我就不必更改每个文件代码?

1 个答案:

答案 0 :(得分:0)

你有某种页面控制器吗?如果是,则将所有公共元素放在输出缓冲区外的页控制器(或控制器中包含的另一个视图)中。如果不是,请写一个(或找一个开源的,like this)。

例如;

// 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();),否则页面内容可能会输出两次。

上面的代码只是一个例子,但它应该指向正确的方向。