Start · Sprachen · PHP · Referenz · ob_get_length

ob_get_length

Funktion

Gibt die Anzahl der Bytes im aktuellen Ausgabepuffer zurück, ohne den Puffer zu leeren oder zu beenden.

seit PHP 4.0.2 Kategorie: io

Signatur

ob_get_length(): int|false

Beschreibung

ob_get_length() ermittelt die aktuelle Länge (in Bytes) des Inhalts im aktiven Ausgabepuffer. Die Funktion ist nützlich, um zu prüfen, ob und wie viel Ausgabe bereits gepuffert wurde, ohne den Puffer zu verändern oder zu beenden.

Ein typischer Einsatz ist die bedingte Verarbeitung von gepuffertem Inhalt: So kann man beispielsweise prüfen, ob eine Template-Datei überhaupt Ausgabe erzeugt hat, bevor man diesen Inhalt weiterverarbeitet oder speichert. Im Gegensatz zu ob_get_contents() muss dabei der gesamte Pufferinhalt nicht in eine Variable kopiert werden.

Wurde kein Ausgabepuffer mit ob_start() geöffnet, gibt die Funktion false zurück. Bei verschachtelten Puffern bezieht sich der Rückgabewert immer auf den zuletzt geöffneten (innersten) Puffer.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Länge des Pufferinhalts in Bytes als int zurück. Ist kein Ausgabepuffer aktiv, wird false zurückgegeben.

Beispiele

Prüfen, ob gepufferte Ausgabe vorhanden ist

<?php
ob_start();

echo 'Hallo, Welt!';

$laenge = ob_get_length();

if ($laenge > 0) {
    echo PHP_EOL . 'Puffer enthält ' . $laenge . ' Bytes.';
}

$inhalt = ob_get_clean();
echo $inhalt;
Hallo, Welt! Puffer enthält 13 Bytes.

Verschachtelte Puffer und Längenabfrage

<?php
ob_start(); // äußerer Puffer
echo 'Äußere Ausgabe';

ob_start(); // innerer Puffer
echo 'Innere Ausgabe';

$innere_laenge = ob_get_length();
echo PHP_EOL . 'Innerer Puffer: ' . $innere_laenge . ' Bytes';

ob_end_flush(); // inneren Puffer in äußeren schreiben

$aeussere_laenge = ob_get_length();
echo PHP_EOL . 'Äußerer Puffer: ' . $aeussere_laenge . ' Bytes';

ob_end_flush();
Äußere AusgabeInnere Ausgabe Innerer Puffer: 14 Bytes Äußerer Puffer: 57 Bytes

Rückgabe false ohne aktiven Puffer

<?php
// Kein ob_start() aufgerufen
$ergebnis = ob_get_length();
var_dump($ergebnis);
bool(false)

// Wichtig · Fallstricke

Achtung: Wenn eine Ausgabe-Callback-Funktion beim ob_start()-Aufruf registriert wurde, spiegelt ob_get_length() die Länge des ungefilterten Pufferinhalts wider — also vor Anwendung des Callbacks. Die tatsächliche gesendete Länge kann abweichen.

In Umgebungen mit Multibyte-Zeichenkodierungen (z. B. UTF-8) gibt die Funktion die Anzahl der Bytes, nicht der Zeichen zurück. Ein einzelnes UTF-8-Zeichen kann mehrere Bytes belegen.