【问题标题】:Execute a PHP file, and return the result as a string执行一个 PHP 文件,并将结果作为字符串返回
【发布时间】:2009-11-05 21:29:52
【问题描述】:

假设我有以下文件 - template.php:

<?php $string = 'Hello World!'; ?>
<html>
    <head>
        <title>Test Page!</title>
    </head>
    <body>
        <h1><?= $string; ?></h1>
        <p>You should see something above this line</p>
    </body>
</html>

我知道我可以使用file_get_contents() 将文件的内容作为字符串获取,然后我可以根据需要对其进行操作。但是,file_get_contents() 不执行 PHP 语句。

我已成功使用 cURL 来访问文件的渲染版本,但它似乎相当缓慢且笨拙,为页面的执行增加了相当多的时间 - 我想这是由于 DNS正在执行查找。

那么,我怎样才能将template.php 的内容变成一个字符串 - 同时在那里有可用的 PHP?

【问题讨论】:

  • 你的意思是 file_get_contents() 对吧?
  • 我做到了,感谢您指出这一点。

标签: php string


【解决方案1】:

应该这样做:

ob_start();
include('template.php');
$returned = ob_get_contents();
ob_end_clean();

【讨论】:

  • 请注意,因为文件被包含而不是单独执行,您可能会遇到有趣的行为。
  • 包括文件扫描它,如果里面有PHP,它就像单独调用一样执行。如果这不是你的意思,那么你能更具体一点吗?
  • 我认为他想说的是要小心,如果您正在执行的 php 文件有任何副作用,即使它没有将输出发送到浏览器。
【解决方案2】:

如果您不需要在 PHP 中执行此操作,则可以从命令行执行 php 脚本,并将其通过管道传输到文本文件,如下所示:

php -f phpFile.php > output.html

【讨论】:

  • 虽然这不是正确的答案,但知道以后肯定会有帮助。
猜你喜欢
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2011-01-18
  • 2017-10-01
  • 2015-02-05
  • 2015-09-08
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多