W3docs

PHP ob_get_clean() Funktion: Alles, was Sie wissen müssen

Erfahren Sie, wie die PHP ob_get_clean() Funktion den Ausgabepuffer ausliest und die Ausgabepufferung in einem Schritt beendet.

Die Funktion ob_get_clean() erfasst alles, was PHP in den Ausgabepuffer geschrieben hat, gibt es als string zurück und schaltet den Puffer in einem Schritt ab. Sie ist der Standardweg, um generierte Ausgabe als Variable zu erfassen, anstatt sie direkt an den Browser zu senden — nützlich für Templating, das Cachen von gerenderten Fragmenten oder die Nachbearbeitung von HTML vor der Anzeige.

Diese Seite erklärt, was ob_get_clean() zurückgibt, wie es sich von verwandten Pufferfunktionen unterscheidet sowie die praktischen Muster und Fallstricke, auf die Sie beim Einsatz stoßen werden.

Was ob_get_clean() tut

Ausgabepufferung ermöglicht es PHP, Ausgaben (von echo, print, printf und sogar rohem HTML zwischen ?> und <?php) im Speicher zu sammeln, anstatt sie sofort zu senden. Sie aktivieren sie mit ob_start() und erfassen oder geben den gepufferten Inhalt später frei.

ob_get_clean() tut zwei Dinge auf einmal:

  1. Get — gibt den aktuellen Inhalt des obersten Ausgabepuffers als string zurück.
  2. Clean — verwirft diesen Puffer und schaltet ihn ab (entspricht ob_get_contents() gefolgt von ob_end_clean()).

Da die Funktion den Puffer sowohl ausliest als auch entfernt, erreicht keine der erfassten Ausgaben den Browser, es sei denn, Sie geben sie selbst mit echo aus.

Syntax

ob_get_clean(): string|false

Sie erwartet keine Argumente. Bei Erfolg gibt sie den Pufferinhalt als string zurück, oder false, wenn die Ausgabepufferung nicht aktiv ist (d. h. kein Puffer zum Auslesen vorhanden ist).

Einfaches Beispiel

<?php

ob_start();                     // start buffering
echo "This will be buffered";   // captured, not printed
$output = ob_get_clean();       // grab it and stop buffering

echo strtoupper($output);       // now we control the output

Ausgabe:

THIS WILL BE BUFFERED

Die Zeile echo "This will be buffered" erreicht den Browser nie allein — sie wird im Puffer gespeichert, in $output zurückgegeben und erst dann angezeigt, nachdem wir sie mit strtoupper() transformiert haben.

Ein praktisches Beispiel: Ein gerendertes Template erfassen

Eine häufige reale Anwendung ist das Rendern einer Template-Datei zu einem string, um ihn zurückgeben, cachen oder per E-Mail versenden zu können:

<?php

function renderTemplate(string $file, array $data): string
{
    extract($data);          // turn array keys into local variables
    ob_start();
    include $file;           // the template's HTML/echo output is buffered
    return ob_get_clean();   // return it as a string
}

// Usage (assuming a greeting.php that echoes "Hello, $name!"):
// $html = renderTemplate('greeting.php', ['name' => 'Ada']);

Hier kann die eingebundene Datei gewöhnliches HTML und <?= $name ?> Tags enthalten; ob_get_clean() wandelt das gesamte gerenderte Ergebnis in einen zurückgebbaren string um, anstatt es auszugeben.

ob_get_clean() vs. verwandte Funktionen

FunktionGibt Inhalt zurück?Beendet Pufferung?Sendet an nächsten Puffer/Browser?
ob_get_clean()JaJaNein (verworfen)
ob_get_contents()JaNeinNein (Puffer bleibt aktiv)
ob_end_clean()NeinJaNein (verworfen)
ob_get_flush()JaJaJa (ausgegeben)

Verwenden Sie ob_get_clean(), wenn Sie die erfasste Ausgabe und möchten, dass sie nicht automatisch irgendwohin gesendet wird.

Häufige Fallstricke

  • Kein aktiver Puffer → false. Der Aufruf von ob_get_clean() ohne ein passendes ob_start() gibt false zurück und erzeugt einen Hinweis. Prüfen Sie mit ob_get_level() oder stellen Sie sicher, dass die Pufferung aktiv ist.
  • Es betrifft nur den obersten Puffer. Puffer können verschachtelt sein. Wenn Sie ob_start() zweimal aufgerufen haben, schließt ob_get_clean() nur den innersten; der äußere Puffer bleibt aktiv.
  • Die Ausgabe ist nach dem Aufruf weg. Einmal geleert, ist der Puffer leer — rufen Sie die Funktion einmal auf und speichern Sie das Ergebnis in einer Variable, wenn Sie es mehr als einmal benötigen.
  • Strikter Vergleich auf Leere. Ein leerer Puffer gibt "" zurück, nicht false. Verwenden Sie === false, um „kein Puffer" von „Puffer war leer" zu unterscheiden.

Fazit

ob_get_clean() ist die bevorzugte Funktion, wenn Sie die gepufferte Ausgabe als string benötigen und die Pufferung danach abschalten möchten, ohne etwas an den Browser zu senden. Sie arbeitet natürlich mit ob_start() zusammen und ermöglicht Muster wie Template-Rendering und Ausgabe-Caching. Für die verwandten Operationen — den Puffer offen halten, ihn ausgeben oder einfach verwerfen — siehe ob_get_contents(), ob_get_flush() und ob_end_clean().

Übungen

Übung
Was macht die Funktion 'ob_get_clean()' in PHP?
Was macht die Funktion 'ob_get_clean()' in PHP?
Was this page helpful?