【问题标题】:strange ob_start() behaviour - double output奇怪的 ob_start() 行为 - 双输出
【发布时间】:2010-07-14 15:06:00
【问题描述】:

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

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

输出

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

但我期待

Text..... 

有什么想法吗?

谢谢

【问题讨论】:

    标签: php output-buffering


    【解决方案1】:

    去掉最后一行的回声。

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

    您可能将ob_get_flush()ob_get_clean() 混淆了

    【讨论】:

      【解决方案2】:

      尝试:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        相关资源
        最近更新 更多