ob_list_handlers
output_add_rewrite_var
Output Control Funktionen
PHP Manual

# ob_start

(PHP 4, PHP 5)

ob_start — Ausgabepufferung aktivieren

### Beschreibung

bool ob_start ([ callback `$output_callback` [, int `$chunk_size` [, bool `$erase` ]]] )

Diese Funktion aktiviert die Ausgabepufferung. Während die Ausgabepufferung aktiv ist werden Scriptausgaben (mit Ausnahme von Headerinformationen) nicht direkt an den Client weitergegeben sondern in einem internen Puffer gesammelt.

Der Inhalt dieses internen Puffers kann mit Hilfe der Funktion ob_get_contents() in eine Stringvariable kopiert werden. Mit der Funktion ob_end_flush() können die Pufferinhalte an den Client ausgegeben werden, ob_end_clean() wird der Puffer ohne Ausgabe gelöscht.

ob_start() kann über den optionalen Parameter `output_callback` ein Funktion zur Nachbearbeitung der Pufferinhalte mitgegeben werden. Die Funktion sollte als einzigen Parameter einen String erwarten und auch einen String als Rückgabewert zurückliefern. Die so spezifizierte Funktion wird aufgerufen wenn der Pufferinhalt mit ob_end_flush() oder am Scriptende ausgegeben wird. Wenn `output_callback` aufgerufen wird erhält die Funktion den aktuellen Inhalt des Ausgabepuffers als Parameter, der Rückgabestring wird dann als neuer Pufferinhalt ausgegeben. Ist `output_callback` kein gültiger Callback-Parameter so gibt ob_start() false zurück. Hat die Callback-Funktion zwei Parameter so wird der zweite Parameter mit einer Bitmaske befüllt die sich aus den Werten `PHP_OUTPUT_HANDLER_START`, `PHP_OUTPUT_HANDLER_CONT` und `PHP_OUTPUT_HANDLER_END` zusammensetzen kann. Liefert `output_callback` `FALSE` als Ergebnis so wird der ursprüngliche Pufferinhalt unverändert ausgegeben.

> Hinweis: ob_gzhandler() wurde in PHP 4.0.4 eingeführt um die gz-komprimierte Ausgabe an Clients zu ermöglichen die dies unterstützen. Wird ob_gzhandler() als Callback- Funktion spezifiziert so prüft es die vom Client unterstützten Ausgabecodierungen und gibt den Pufferinhalt dementsprechend codiert weiter.

> Hinweis: Vor PHP 4.3.2 lieferte die Funktion bei ungültigen `output_callback` Werten noch nicht `FALSE` zurück.

Warnung

Einige Webserver (z.B. Apache) ändern das Arbeitsverzeichnis des Scripts vor dem Aufruf der Callback-Funktion am Scriptende. Sie können falls nötig mit Hilfe von chdir(dirname($_SERVER['SCRIPT_FILENAME'])) wieder in das Scriptverzeichnis zurückwechselni.

Wird ein Wert für den optionalen Parameter `chunk_size` angegeben so wird die Callback-Funktion jeweils nach dem ersten Newline- Zeichen nach Überschreiten der so festgelegten Anzahl von Ausgabebytes aufgerufen. Wird `NULL` als Parameterwert übergeben so wird der Parameter ignoriert.

Wird für den Parameter `erase` `FALSE` übergeben so wird der Ausgabepuffer nur zum Scriptende geleert (ab PHP 4.3.0).

Ausgabepuffer können verschachtelt werden, d.g. Sie können ob_start() erneut aufrufen während bereits ein anderer ob_start() Aufruf aktiv ist. Sie müssen nur sicher stellen das Sie später auch ob_end_flush() entsprechend oft aufrufen. Sind mehrere Callback-Funktion aktiv so werden die Ausgaben der Reihe nach von Ausgabepuffer zu Ausgabepuffer weitergegeben und die Callback-Funktionen in Verschachtelungsreihenfolge aufgerufen.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() und ob_start() können innerhalb einer Callback-Funktion nicht benutzt werden, das Ergebnis eines solchen Aufrufs ist nicht definiert. Wenn Sie den Inhalt eines Puffers aus einem Callback löschen wollen so gegeben Sie einfach den Leerstring "" zurück. Auch Funktionen wie print_r($expression, true) oder highlight_file($filename, true) die den Ausgabepuffermechanismus intern nutzen können innerhalb eines Callbacks nicht benutzt werden.

Beispiel #1 Beispiel einer benutzerkonfigurierten Callbackfunktion

`<?php
function callback($buffer)
{
// ersetzt Äpfel mit Birnen
return (str_replace("Äpfel", "Birnen", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>Das ist wie Äpfel mit Birnen zu vergleichen.</p>
</body>
</html>
<?php
ob_end_flush();
?>`

Would produce:

    <html>
    <body>
    <p>Das ist wie Äpfel mit Äpfel zu vergleichen.</p>
    </body>
    </html>

Siehe auch ob_get_contents(), ob_end_flush(), ob_end_clean(), ob_implicit_flush(), ob_gzhandler(), ob_iconv_handler() mb_output_handler(), und ob_tidyhandler().

ob_list_handlers
output_add_rewrite_var
Output Control Funktionen
PHP Manual