(PHP 4, PHP 5)
ob_start — Ausgabepufferung aktivieren
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 nichtFALSE
zurück.
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ückwechseln.
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 Birnen mit Birnen 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().