如何将echo()的结果捕获到PHP中的变量中?

时间:2010-10-30 20:30:38

标签: php capture echo

我正在使用一个回显结果而不是返回结果的PHP库。有没有一种简单的方法来捕获echo / print的输出并将其存储在变量中? (已输出其他文本,并且未使用输出缓冲。)

4 个答案:

答案 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();