ob_get_clean

ob_get_clean()

Renvoie le contenu du tampon de sortie courant sous forme de chaîne et ferme le tampon sans envoyer le contenu. Sans tampon actif, elle renvoie false.

Exemples

// la sortie d'une fonction qui ne fait qu'afficher, dans une variable
function capture(callable $callback) {
    ob_start();
    $callback();
    return ob_get_clean();
}
$printout = capture(function () {
    print_r(array("a" => 1));
});
echo strlen($printout) > 0 ? "capturé" : "vide"; // capturé
echo preg_replace("/\s+/", " ", trim($printout)); // Array ( [a] => 1 )
// le corps d'un e-mail à partir d'un modèle
$name = "Marie";
$body = capture(function () use ($name) {
    echo "Bonjour " . $name . ",\n";
    echo "merci pour votre commande.";
});
echo $body; // Bonjour Marie,\nmerci pour votre commande.
// en pratique, on capture souvent un modèle inclus :
// ob_start(); include __DIR__ . "/templates/email.php"; $body = ob_get_clean();

Points d’attention

  • Sans tampon actif, elle renvoie false. Appelez-la uniquement en paire avec ob_start().
  • Elle ne ferme que le tampon le plus intérieur. Avec des tampons imbriqués, appelez-la autant de fois qu’il y a eu d’appels à ob_start().
  • C’est la même chose qu’ob_get_contents() suivi d’ob_end_clean(), en plus court.
  • Pour les fonctions qui savent renvoyer le résultat, passer par le tampon est inutile : print_r($x, true) et var_export($x, true) renvoient directement le texte.

Fonctions associées :
ob_start()
ob_get_contents()
ob_end_clean()
print_r()
ob_clean()