2010-11-22 51 views
6

你好有一种方法可以在处理php代码的同时获取一个php文件的内容吗? 我需要包含一个代码到另一个页面,但我需要打印它在特定位置的内容。file_get_contents和php代码

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

谢谢。

编辑:抱歉,家伙好像在我写作的时候醉了。我纠正了。

我有一个引擎处理页面内容,将它们放入一个变量,然后将它们打印在html页面中的特定位置。在引擎中,我需要“嵌入”其他可能有一些php标签的“静态”页面的代码。如果我使用file_get_contents,我将以纯文本的形式获取内容(如果使用include,它将不起作用,因为它不是它的函数)。所以我需要的是将PROCESSED代码嵌入到引擎中(作为即将印刷的HTML)。

+3

你能澄清你想要什么和为什么'包括()'使用文件系统路径将不会为你工作?我不明白。 – 2010-11-22 00:50:35

+0

你能改说吗?我真的不明白你在说什么。 – robbrit 2010-11-22 00:51:32

+0

感谢您的澄清。我在我的答案中正确假设。 – ceejayoz 2010-11-22 01:34:57

回答

22

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

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

// now do something with $output 
+1

不知道他是否需要,因为他*似乎*想要PHP源代码...不清楚*他需要什么 – 2010-11-22 00:56:58

+0

他说:“如果我使用file_get_contents内容被采取但如果我有一些PHP标记我会像纯文本一样获得这些内容“,这表明他正在努力做到这一点。 – ceejayoz 2010-11-22 00:58:01

+0

我读了那部分不同,但我认为你是对的 – 2010-11-22 01:13:31

-1

你的问题是不是100%清楚,但它看起来像你想包括一个远程PHP源,你可以使用包括(“http://domain.com/path/to/php.phps” );而不是file_get_contents。

你说你只需要远程代码的一部分,如果是这样,你可以使用file_get_contents,用substr或reg exp代码获取这部分代码保存在本地文件中并包含或做一个评估。

这些解决方案都不安全也不建议,您不应该包含远程文件以直接评估您的代码。

-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"; 
}