(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Ausgabepufferung aktivieren
$callback
= null
, int$chunk_size
= 0, int$flags
= PHP_OUTPUT_HANDLER_STDFLAGS
): boolDiese Funktion aktiviert die Ausgabepufferung. Während die Ausgabepufferung aktiv ist, werden Skriptausgaben nicht direkt an den Client weitergegeben, sondern in einem internen Puffer gesammelt. Welche Ausgaben genau betroffen sind, ist unter What Output Is Buffered? beschrieben.
Ausgabepuffer können verschachtelt werden, d. h. ob_start() kann erneut aufgerufen werden, während bereits ein anderer Puffer aktiv ist. Sind mehrere Ausgabepuffer aktiv, wird die Ausgabe in der Reihenfolge der Verschachtelung durch jeden dieser Puffer gefiltert. Siehe Nesting Output Buffers für weitere Einzelheiten.
Eine ausführliche Beschreibung der Ausgabepuffer ist unter User-Level Output Buffers zu finden.
callback
Optional kann ein callback
-Callable angegeben werden. Dieses kann auch durch Übergabe von null
umgangen werden.
callback
wird aufgerufen, wenn der Ausgabepuffer geleert (gesendet), bereinigt oder am Ende des Skripts geleert wird.
Die Signatur von callback
ist wie folgt:
buffer
phase
PHP_OUTPUT_HANDLER_*
-Konstanten . Weitere Einzelheiten sind unter Flags Passed To Output Handlers zu finden. Wenn callback
false
zurückgibt, wird der Inhalt des Puffers zurückgegeben. Weitere Einzelheiten sind unter Output Handler Return Values zu finden.
Wenn eine der folgenden Funktionen innerhalb eines Ausgabe-Handlers aufgerufen wird, führt dies zu einem schwerwiegenden Fehler: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().
Weitere Einzelheiten zu callback
s (Ausgabe-Handler) sind unter Output Handlers und Working With Output Handlers zu finden.
chunk_size
Wird der optionale Parameter chunk_size
übergeben, dann wird der Puffer nach jedem Codeblock geleert, der zu einer Ausgabe führt, durch die der Puffer die Größe von chunk_size
erreicht oder überschreitet. Der Vorgabewert 0
bedeutet, dass die gesamte Ausgabe gepuffert wird, bis der Puffer ausgeschaltet wird. Weitere Einzelheiten sind unter Buffer Size zu finden.
flags
Beim Parameter flags
handelt es sich um eine Bitmaske, die die Operationen steuert, die mit dem Ausgabepuffer durchgeführt werden können. Die Vorgabe ist, zu erlauben, dass Ausgabepuffer bereinigt, geleert und entfernt werden dürfen, was ausdrücklich mit den Flags für die Steuerung des Ausgabepuffers . eingestellt werden kann. Weitere Einzelheiten sind unter Operations Allowed On Buffers zu finden.
Jedes Flag steuert den Zugriff auf einen Satz von Funktionen, wie im Folgenden beschrieben:
Konstante | Funktionen |
---|---|
PHP_OUTPUT_HANDLER_CLEANABLE | ob_clean() |
PHP_OUTPUT_HANDLER_FLUSHABLE | ob_end_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE | ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush() |
Beispiel #1 Beispiel einer benutzerdefinierten Callback-Funktion
<?php
function callback($buffer)
{
// ersetzt alle Ä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();
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
<html> <body> <p>Das ist wie Birnen mit Birnen zu vergleichen.</p> </body> </html>
Beispiel #2 Erzeugen eines nicht löschbaren Ausgabepuffers
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>