如何在字符串上使用ob_start?

时间:2015-02-28 02:08:42

标签: php

我有一个项目,我使用OB_START从PHP文件中收集输出。问题是有时我需要在1次调用中将PHP文件的内容重复20到30次。

我想执行类似get_file_contents({file})的操作,然后将该字符串用于OB_START()调用。但是,我所看到的所有示例都使用include()调用来每次都获取脚本。

有没有办法加载脚本一次但在OB_START()调用中多次使用它?

ob_start();
include "file.php";
$output = ob_get_clean();

我想做什么:

$script = get_file_contents(file);
$output = '';
begin loop;
ob_start();
{somehow make $script execute as code}
$output .= ob_get_clean();
end loop;

1 个答案:

答案 0 :(得分:0)

您可以再次使用include

$file = "SomeScript.php"
$output = '';
begin loop;
ob_start();
include $file
$output .= ob_get_clean();
end loop;

如果你按照你所描述的方式去做,你可以做以下事情,但这很奇怪:

$script = get_file_contents(file);
$output = '';
begin loop;
ob_start();
eval($script);
$output .= ob_get_clean();
end loop;

在我看来,更好的解决方案是使脚本成为输出结果而不是打印结果的函数。所以我们假设您将“脚本”放入函数调用foo()中,然后您可以这样做:

$file = "SomeScript.php"
include $file
$output = '';
begin loop;
$output .= foo();
end loop;

但如果您无法更改脚本的内容,那么我的前两个示例应该适合您。