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()