我试图保持我的代码清理将其中的一些分解为文件(有点像库)。但其中一些文件需要运行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;
}
或者你的意思是为每个文件创建一个函数?
答案 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());