我正在使用一个PHP库,它会输出结果而不是返回结果。有没有一种简单的方法可以捕获echo / print的输出并将其存储在变量中?(其他文本已经被输出,并且没有使用输出缓冲区。)
您可以使用输出缓冲:
ob_start();
function test ($var) {
echo $var;
}
test("hello");
$content = ob_get_clean();
var_dump($content); // string(5) "hello"
但这不是一种清晰和有趣的语法使用方式。找到一个更好的库可能是个好主意...
ob_start();
echo "Some String";
$var = ob_get_clean();
如果可能的话,你应该真的重写这个类。我怀疑找到echo/print语句并用$output .=
来替换它们不会很难。使用ob_xxx确实会消耗资源。
最好的做法是在应用程序完全完成之前不要回显数据,例如:
<?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();
ob_get_contents()
会捕获所有被回显的内容,但不会阻止它在以后发送到浏览器。字符串将被捕获并回显。如果您想要捕获而不是回显,则应使用ob_get_clean()
。 - kijin