ob_get_contents

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_get_contentsRetourne le contenu du tampon de sortie

Description

ob_get_contents(): string|false

Retourne le contenu du tampon de sortie sans l'effacer.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne le contenu du tampon de sortie sans l'effacer ou false, si la temporisation de sortie n'est pas activée.

Exemples

Exemple #1 Exemple avec ob_get_contents()

<?php

ob_start
();

echo
"Bonjour ";

$out1 = ob_get_contents();

echo
"le monde !";

$out2 = ob_get_contents();

ob_end_clean();

var_dump($out1, $out2);
?>

L'exemple ci-dessus va afficher :

string(8) "Bonjour "
string(18) "Bonjour le monde !"

Voir aussi

add a note add a note

User Contributed Notes 6 notes

up
13
mauroasprea+php at gmail dot com
13 years ago
This is an example of how the stack works:

<?php
//Level 0
ob_start();
echo
"Hello ";

//Level 1
ob_start();
echo
"Hello World";
$out2 = ob_get_contents();
ob_end_clean();

//Back to level 0
echo "Galaxy";
$out1 = ob_get_contents();
ob_end_clean();

//Just output
var_dump($out1, $out2);
?>
up
2
Mark Clements
10 years ago
Note that, unlike PHP variables which make efficient use of memory, getting the contents of the output buffer results in a new copy of the buffer being made.  This can end up massively increasing the memory requirements of your script if your output is large.

Example code:

<?php

print(memory_get_usage() . "<br>");

ob_start();

for (
$i = 0; $i < 5000000; $i++)
    print(
" ");

print(
memory_get_usage() . "<br>");

$foo = ob_get_contents();

print(
memory_get_usage() . "<br>");

ob_end_flush();

?>

Output:

  351664
5359152
10359256
up
-2
ipfound at gmail dot com
10 years ago
The ob_get_contents() function has different return behaivor in PHP 5.3.x and PHP 5.5.x. Take a look at very simple example for PHP 5.3

<?php
var_dump
(ob_get_contents());
?>
Output: bool(false)

but in PHP 5.5.x, the same php code will return:
Output: string (0) ""

Actually, we can use type regulation - intval(ob_get_contents()), for cheking On/Off output buffering, but it lays the possible problems in the future.
up
-5
DrDreistein at dontknow dot at
13 years ago
i made a simple test which is faster: adding some text in the normal way or by the ob stack:

<?php
$start
= microtime(true);
$var = '';
for(
$i=0 ; $i <= 1000000 ; $i++) {
   
$var .= ' ';
}
$middle = microtime(true);

ob_start();
for(
$i=0 ; $i <= 1000000 ; $i++) {
    echo
' ';
}
$var = ob_get_contents();
ob_end_clean();

$end = microtime(true);

echo
$middle - $start;
echo
'<br />';
echo
$end - $middle;
?>

Outputs something like this:

0.33658003807068
0.30778789520264
up
-4
m227 ( at ) poczta dot onet dot pl
19 years ago
if you use ob_start with a callback function as a parameter, and that function changes ob string (as in example in manual) don't expect that ob_get_contents will return changed ob.
it will work as you would use ob_start with no parameter at all. So don't be confused.
up
-14
http://www.francescosaf.altervista.org
19 years ago
transfer image, another method (alternative to fsockopen or function socket) :

server(192.168.0.1)
makeimage.php
       ...........
       ...........
       $nameimage="xxxx.jpg"
       $comand=exec("plotvelocity.sh $nameimage $paramater1 $paramater2");
       ob_start();
        readfile($nameimage);
        $image_data = ob_get_contents();
        ob_end_clean();
        echo $image_data;
        unlink($nameimage);

Client  (192.168.0.2)
  $bild="images/newimage2.gif";
  $host="192.168.0.1";
  $url=file_get_contents("http://$host/makeimage.php?$querystring");
  $fp = fopen("$bild", 'wb');
  fwrite($fp, $url);
  fclose($fp);
  echo '<img src="'.$bild.'">';

naturally you can transfer whichever thing and not only images
To Top