奇怪的ob_start()行为 - 双输出

时间:2010-07-14 15:06:00

标签: php output-buffering

ob_start()似乎没有停止任何输出所以当我刷新缓冲区时它会加倍

<?php
ob_start();
echo "Text..... <br />";
echo ob_get_flush();
?>

输出

Text..... 
Text..... 

但我期待

Text..... 

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:12)

删除最后一行的回音。

ob_get_flush()隐式打印存储的输出并返回它,因此您将其打印两次。

您可能将ob_get_flush()ob_get_clean()

混淆了

答案 1 :(得分:1)

尝试:

<?php
ob_start();
echo "Text..... <br />";
ob_get_flush();
?>

来自http://php.net/manual/en/function.ob-get-flush.php

  

刷新输出缓冲区,将其作为字符串返回并关闭输出缓冲

刷新输出意味着:它将输出发送到浏览器或命令行。 返回字符串意味着:它返回字符串,因此您可以将刷新的字符串存储在变量中。因为你echo这个字符串,你第二次得到输出。