使用 file_get_contents 将本地 PHP 文件的 HTML 输出存储到字符串中

Posted

技术标签:

【中文标题】使用 file_get_contents 将本地 PHP 文件的 HTML 输出存储到字符串中【英文标题】:Storing the HTML output from a local PHP file into a string using file_get_contents 【发布时间】:2011-02-15 07:32:22 【问题描述】:

有一个 header.php 文件,它包含一些返回 html 的 php 代码。 我知道我可以使用 require、include 来回显结果,但我想做的是将其处理后的输出字符串存储到一个变量中。

在一个页面中,我使用了:

$headerHTML=file_get_contents('header.php');

然后我得到的是 PHP 代码输出,而不是处理后的 HTML 输出。 我知道添加 http:// 会有所帮助。 但我更喜欢继续使用相对路径,如何告诉函数正确处理 php 文件?

注意:如果可能的话,我想继续使用file_get_contents 这个语句而不是使用ob_start()

【问题讨论】:

【参考方案1】:

您可以查看http://in2.php.net/manual/en/function.eval.php#56641,希望对您有所帮助。

【讨论】:

【参考方案2】:

不要使用eval() - 这是邪恶的!

使用相对本地路径automatically map it to a absolute URL。

【讨论】:

【参考方案3】:

如果启用了 URL 包装器并且您想要 header.php 的输出(并且您不想保持会话状态),您可以使用 $headerHTML=file_get_contents('http://yourdomain.tld/path/to/header.php');,但为什么您想要做这样的事情让我不明白。您确定您不是在尝试做一些可以通过使用模板和缓存轻松解决的事情吗?

【讨论】:

【参考方案4】:

我宁愿使用 require() 包裹在 ob_start()ob_get_clean() 中。我确信这种方法没有任何问题。

【讨论】:

看来这可能是最好的办法了。 除非您需要在已经包含在 ob_ 中的部分代码中执行此操作 ob_ 调用可以嵌套;在这种情况下,返回 当前 缓冲区内容。

以上是关于使用 file_get_contents 将本地 PHP 文件的 HTML 输出存储到字符串中的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents() 不工作

file_get_contents 在本地测试可以, 但在服务器上报错403

PHP file_get_contents 在本地主机上不起作用

如何使用 CURL 而不是 file_get_contents?

从 file_get_contents() 确定数据类型

如何将file_get_contents转换为cURL