ob_get_flush
(PHP 4 >= 4.3.0, PHP 5)
ob_get_flush — Flush the output buffer, return it as a string and turn off output buffering
Description
string ob_get_flush
( void
)
ob_get_flush() flushes the output buffer, return it as a string and turns off output buffering.
Note: This function is similar to ob_end_flush(), except that this function returns the buffer as a string.
Return Values
Returns the output buffer or FALSE
if no buffering is active.
Examples
Example #1 ob_get_flush() example
<?php
//using output_buffering=On
print_r(ob_list_handlers());
//save buffer in a file
$buffer = ob_get_flush();
file_put_contents('buffer.txt', $buffer);
print_r(ob_list_handlers());
?>
The above example will output:
Array ( [0] => default output handler ) Array ( )
See Also
- ob_end_clean() - Clean (erase) the output buffer and turn off output buffering
- ob_end_flush() - Flush (send) the output buffer and turn off output buffering
- ob_list_handlers() - List all output handlers in use
Коментарии
Correction to previous post: ob_get_clean() is better, ie:
<?php
// start generating html
$html = '<html><head>'; // etc
// start output buffering
ob_start();
// call function which outputs immediately
print_menu();
// append this to $html and empty buffer
$html .= ob_get_clean();
?>
Hi,
this is just to add a behavior that I haven't understud at first place.
ob_get_flush actually returns the content of the buffer as a text but also it sends the buffer back to the browser so that it's displayed on user screen.
Use ob_get_clean if you do not want the buffer to be send to the user
I don't know how exactly this works, but if you call this function, PHP would behave as if headers have been sent (even though the output has gone to a string).
This means that you can't call this function, and then call setcookie for example.
This was verified by trial and error