您可以使用输出缓冲来做到这一点:
function include2string($file) {
ob_start();
include($file);
return ob_get_clean();
}
@DaveRandom 指出(正确地)将其包装在函数中的问题是您的脚本($file)将无法访问全局定义的变量。对于动态包含的许多脚本来说,这可能不是问题,但如果这对您来说是个问题,那么可以在函数包装器之外使用此技术(如其他人所示)。
** 导入变量 您可以做的一件事是添加一组您想作为变量公开给脚本的数据。把它想象成将数据传递给模板。
function include2string($file, array $vars = array()) {
extract($vars);
ob_start();
include($file);
return ob_get_clean();
}
你会这样称呼它:
include2string('foo.php', array('key' => 'value', 'varibleName' => $variableName));
现在$key
并且$variableName
将在您的 foo.php 文件中可见。
如果您觉得更清楚,您还可以为您的脚本“导入”一个全局变量列表。
function include2string($file, array $import = array()) {
extract(array_intersect_key($GLOBALS, array_fill_keys($import, 1)));
ob_start();
include($file);
return ob_get_clean();
}
你可以调用它,提供一个你想暴露给脚本的全局变量列表:
$foo='bar';
$boo='far';
include2string('foo.php', array('foo'));
foo.php
应该可以看到foo
,但是没有boo
。