将文件包含到变量中

时间:2011-03-14 20:46:23

标签: php include server-side-includes

我试图保持我的代码清理将其中的一些分解为文件(有点像库)。但其中一些文件需要运行PHP。

所以我想做的是:

$include = include("file/path/include.php");
$array[] = array(key => $include);

include("template.php");

比在template.php中我会:

foreach($array as $a){
    echo $a['key'];
}

所以我想存储php在变量中运行后发生的事情以便稍后传递。

使用file_get_contents不会运行它将它存储为字符串的php,所以有没有选择,或者我运气不好?

更新

所以喜欢:

function CreateOutput($filename) {
  if(is_file($filename)){
      file_get_contents($filename);
  }
  return $output;
}

或者你的意思是为每个文件创建一个函数?

2 个答案:

答案 0 :(得分:10)

您似乎需要使用Output Buffering Control - 请参阅ob_start()ob_get_clean()函数。

使用输出缓冲将允许您将标准输出重定向到内存,而不是将其发送到浏览器。


这是一个简单的例子:

// Activate output buffering => all that's echoed after goes to memory
ob_start();

// do some echoing -- that will go to the buffer
echo "hello %MARKER% !!!";

// get what was echoed to memory, and disables output buffering
$str = ob_get_clean();

// $str now contains what whas previously echoed
// you can work on $str

$new_str = str_replace('%MARKER%', 'World', $str);

// echo to the standard output (browser)
echo $new_str;

你得到的输出是:

hello World !!!

答案 1 :(得分:0)

您的file/path/include.php看起来如何?

你必须通过http调用file_get_contents来获取它的输出,例如

$str = file_get_contents('http://server.tld/file/path/include.php');

最好通过函数修改文件以输出一些文本:

<?php

function CreateOutput() {
  // ...
  return $output;
}

?>

比包括它之后,调用函数来获取输出。

include("file/path/include.php");
$array[] = array(key => CreateOutput());