我正在使用一个回显结果而不是返回结果的PHP库。有没有一种简单的方法来捕获echo / print的输出并将其存储在变量中? (已输出其他文本,并且未使用输出缓冲。)
答案 0 :(得分:12)
你可以使用输出缓冲:
ob_start();
function test ($var) {
echo $var;
}
test("hello");
$content = ob_get_clean();
var_dump($content); // string(5) "hello"
但它不是一个干净而有趣的语法。找到一个更好的图书馆可能是个好主意......
答案 1 :(得分:4)
我知道的唯一方法。
ob_start();
echo "Some String";
$var = ob_get_clean();
答案 2 :(得分:1)
如果可以的话,你应该真的重写这个课程。我怀疑找到echo / print语句并用$output .=
替换它们会很困难。使用ob_xxx确实需要资源。
答案 3 :(得分:0)
在应用程序完全完成之前,不要回显数据总是很好的做法,例如
<?php
echo 'Start';
session_start();
?>
现在session_start
和另一串函数不起作用,因为已经有数据作为响应输出,但是通过执行以下操作:
<?php
$output = 'Start';
session_start();
echo $output;
?>
这样可以正常运行并且不易出错,但是如果它必须捕获输出,那么你会这样做:
ob_start();
//Whatever you want here
$data = ob_get_contents();
//Then we clean out that buffer with:
ob_end_clean();