downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

ob_get_contents> <ob_flush
[edit] Last updated: Fri, 26 Apr 2013

view this page in

ob_get_clean

(PHP 4 >= 4.3.0, PHP 5)

ob_get_cleanGet current buffer contents and delete current output buffer

Description

string ob_get_clean ( void )

Gets the current buffer contents and delete current output buffer.

ob_get_clean() essentially executes both ob_get_contents() and ob_end_clean().

Return Values

Returns the contents of the output buffer and end output buffering. If output buffering isn't active then FALSE is returned.

Examples

Example #1 A simple ob_get_clean() example

<?php

ob_start
();

echo 
"Hello World";

$out ob_get_clean();
$out strtolower($out);

var_dump($out);
?>

The above example will output:


string(11) "hello world"

See Also



ob_get_contents> <ob_flush
[edit] Last updated: Fri, 26 Apr 2013
 
add a note add a note User Contributed Notes ob_get_clean - [7 notes]
up
0
steven at bielik dot com
2 years ago
Also, don't forget that you will need to ob_start() again for any successive calls:

<?php
ob_start
();
echo
"1";
$content = ob_get_clean();

ob_start(); // This is NECESSARY for the next ob_get_clean() to work as intended.
echo "2";
$content .= ob_get_clean();

echo
$content;
?>

Output: 12

Without the second ob_start(), the output is 21 ...
up
0
sergei dot solomonov at gmail dot com
8 months ago
<?php
ob_start
();
echo
"1";
$content = ob_get_clean();

echo
"2";
$content .= ob_get_clean();

echo
$content;
?>

This script outputs 21 in CLI mode and 12 otherwise (under my apache and nginx)
up
0
56ka dot prog at gmail dot com
2 years ago
Hi

Warning, this command isn't exactly like ob_get_contents() and ob_end_clean() successively. Sometimes you will have to do these two commands manually.

Today I lost 2 hours to localize that problem and to find the solution -_-'

See you
up
0
profix at cms-studio dot net
4 years ago
Maybe it can be useful

$__ob_stack=array();

function ob_break() {
global $__ob_stack;
while (ob_get_level()>0)
  array_push($__ob_stack,ob_get_clean());
}

function ob_continue() {
global $__ob_stack;
while (count($__ob_stack)>0) {
  ob_start();
  echo array_pop($__ob_stack);
  }
}

ob_start();
echo "1"; // now we write to "ob" buffer
ob_break();
echo "2"; // now we write to stdout
ob_continue();
echo "3"; // now we write again to "ob" buffer
$output=ob_get_clean();
echo $output;

// output is 213
up
0
egbert teeselink
5 years ago
If you're trying to capture the output from an included 3rd party script you don't seem to be capturing everything, the following might help:

function ob_end_clean_all()
{
    $s = "";
    do
    {
        $s = ob_get_contents() . $s;
    } while(ob_end_clean());
    return $s;
}

This function closes all nested output bufferings, therefore closing any buffers that the included script does not explicitly close. It's basically a ob_end_clean that sweeps together all the output buffers instead of just the innermost one.
up
0
ludvig dot ericson at gmail dot com
7 years ago
Notice that the function beneath does not catch errors, so throw in an @ before those ob_* calls
up
0
webmaster at ragnarokonline dot de
9 years ago
Running PHP4 < 4.3.0, you can simply add the following to use the function anyway:

<?php
if (!function_exists("ob_get_clean")) {
    function
ob_get_clean() {
       
$ob_contents = ob_get_contents();
       
ob_end_clean();
        return
$ob_contents;
    }
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites