我有一个项目,我使用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;
答案 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;
但如果您无法更改脚本的内容,那么我的前两个示例应该适合您。