views:

27

answers:

2

Hey all,

ob_start() doesn't seem to be stopping any output so when I flush the buffer it's doubling up

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

Outputs

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

But I was expecting

Text..... 

Any ideas ?

Thanks

+6  A: 

Remove the echo on the last line.

ob_get_flush() implicitly prints the stored output and also returns it so you're printing it out twice.

You may have confused ob_get_flush() with ob_get_clean()

Mike B
Spot on, Many Thanks
JimmyJ
A: 

try:

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

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

Flush the output buffer, return it as a string and turn off output buffering

Flush the output means: it sends the output to the browser or the commandline. return the string means: it returns the string, so you can store the flushed string in a variable. And since you're echoing this string you get the output a second time.

jigfox