file_get_contents和php代码

时间:2010-11-22 00:46:12

标签: php include

你好有办法在处理php代码时获取php文件的内容吗? 我需要将代码包含到另一个页面中,但我需要将其打印在特定位置。

如果我使用include,代码将在html标记之前打印,当然导致它在页面之前被处理,但如果我使用file_get_contents,内容将在页面中获取,但如果我有一些php标签,我也会得到这些作为纯文本。

谢谢。

编辑:对不起,伙计们在我写作的时候似乎喝醉了。我纠正了。

我有一个处理页面内容的引擎,将它们放入变量中,然后将它们打印在html页面中的特定位置。在引擎中我需要“嵌入”其他“静态”页面的代码,这些页面可能有一些php标签。如果我使用file_get_contents,我会将内容作为纯文本(没有解析php标签),如果我使用include它就行不通,因为它不是它的功能。所以我需要的是将PROCESSED代码嵌入到引擎中(作为准备打印的HTML)。

3 个答案:

答案 0 :(得分:22)

您可以使用output buffer包含PHP文件,但保存结果输出以供以后使用,而不是立即将其打印到浏览器。

ob_start();
include('path/to/file.php');
$output = ob_get_contents();
ob_end_clean();

// now do something with $output

答案 1 :(得分:-1)

您的问题不是100%明确,但看起来您想要包含远程php源,您可以使用include(“http://domain.com/path/to/php.phps”);而不是file_get_contents。

你说你只需要远程代码的一部分,如果是这样,你可以使用file_get_contents,用substr或reg exp保存在本地文件中的这部分代码并包含或执行eval。 / p>

这些解决方案都不安全或不推荐,您不应该包含远程文件来直接评估您的代码。

答案 2 :(得分:-1)

如果我理解正确;您正在尝试加载一个php文件来读取其内容并同时执行它。

即: include('/foo/bar')file_get_contents('/foo/bar')

以下函数同时执行并返回文件的内容(假设它存在。

function load_and_process($path) {
    if(file_exists($path) {
        include($path);
        return file_get_contents($path);
    }
    return false;
}

并称之为:

if($file_contents = load_and_process('/foo/bar')) {
    echo "Loaded $file_contents from /foo/bar";
}