ob_start
(PHP 4, PHP 5, PHP 7)
ob_start — Ausgabepufferung aktivieren
Beschreibung
$output_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 (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. Um auszugeben, was im internen Puffer gespeichert ist, ist ob_end_flush() zu verwenden. Alternativ wird mit ob_end_clean() der Puffer stillschweigend verworfen.
Einige Webserver (z.B. Apache) ändern das Arbeitsverzeichnis des Skripts vor dem Aufruf der Callback-Funktion. Bei Bedarf kann mit Hilfe von beispielsweise chdir(dirname($_SERVER['SCRIPT_FILENAME'])) wieder in das Scriptverzeichnis zurückgewechselt werden.
Ausgabepuffer können verschachtelt werden, d.h. Sie können ob_start() erneut aufrufen, während bereits ein anderer ob_start() Aufruf aktiv ist. Sie müssen nur sicher stellen, dass Sie später auch ob_end_flush() entsprechend oft aufrufen. Sind mehrere Callback-Funktionen aktiv, so werden die Ausgaben der Reihe nach von Ausgabepuffer zu Ausgabepuffer weitergegeben, und die Callback-Funktionen in Verschachtelungsreihenfolge aufgerufen.
Parameter-Liste
-
output_callback
-
Optional kann eine
output_callback
Funktion angegeben werden. Diese Funktion nimmt eine Zeichenkette als Parameter entgegen, und sollte eine Zeichenkette zurückliefern. Die Funktion wird aufgerufen, wenn der Ausgabepuffer geleert (gesendet) oder bereinigt wird (mit ob_flush(), ob_clean() oder einer ähnlichen Funktion), oder wenn der Ausgabepuffer am Ende der Anfrage zum Browser gesendet wird. Wennoutput_callback
aufgerufen wird, dann empfängt es den Inhalt des Ausgabepuffers als Parameter, und sollte einen neuen Ausgabepuffer als Ergebnis zurückgeben, der an den Browser gesendet wird. Istoutput_callback
keine aufrufbare Funktion, gibt diese FunktionFALSE
zurück. Dies ist die Signatur des Callbacks:handler ( string$buffer
[, int$phase
] ) : string-
buffer
- Inhalt des Ausgabepuffers.
-
phase
-
Bitmaske von
PHP_OUTPUT_HANDLER_*
Konstanten.
Gibt
output_callback
FALSE
zurück, wird die ursprüngliche Eingabe an den Browser gesendet.Um den Parameter
output_callback
auszulassen, kann einNULL
-Wert übergeben werden.ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() und ob_start() können innerhalb einer Callback-Funktion nicht aufgerufen werden; das Ergebnis eines solchen Aufrufs ist nicht definiert. Wenn Sie den Inhalt eines Puffers löschen wollen, so gegeben Sie einfach "" (eine leere Zeichenkette) aus der Callback-Funktion 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 aufgerufen werden.
Hinweis:
Die Funktion ob_gzhandler() existiert, um es zu ermöglichen gz-kodierte Daten an Webbrowser zu senden, die komprimierte Webseiten unterstützen. ob_gzhandler() ermittelt welche Art von Inhaltskodierung der Browser akzeptiert, und liefert seine Ausgabe entsprechend.
-
-
chunk_size
-
Wird der optionale Parameter
chunk_size
übergeben, dann wird der Puffer nach jedem Ausgabeaufruf geleert, der dazu führt, dass die Länge des Puffers größer oder gleichchunk_size
ist. Der Vorgabewert 0 bedeutet, dass die Ausgabefunktion nur aufgerufen wird, wenn der Ausgabepuffer geschlossen wird.Vor PHP 5.4.0 war der Wert 1 ein Sonderfall, der die Datenblockgröße auf 4096 Bytes festlegte.
-
flags
-
Beim Parameter
flags
handelt es sich um eine Bitmaske, die die Operationen steuert, die mit dem Ausgabepuffer durchgeführt werden können. Vorgabe ist es zu erlauben, dass Ausgabepuffer bereinigt, geleert und entfernt werden dürfen, was ausdrücklich mitPHP_OUTPUT_HANDLER_CLEANABLE
|PHP_OUTPUT_HANDLER_FLUSHABLE
|PHP_OUTPUT_HANDLER_REMOVABLE
, oderPHP_OUTPUT_HANDLER_STDFLAGS
als Abkürzung, eingestellt werden kann.Jedes Flag steuert den Zugriff auf einen Satz von Funktionen, wie im Folgenden beschrieben:
Konstante Funktionen PHP_OUTPUT_HANDLER_CLEANABLE
ob_clean(), ob_end_clean(), und ob_get_clean(). PHP_OUTPUT_HANDLER_FLUSHABLE
ob_end_flush(), ob_flush(), und ob_get_flush(). PHP_OUTPUT_HANDLER_REMOVABLE
ob_end_clean(), ob_end_flush(), und ob_get_flush().
Changelog
Version | Beschreibung |
---|---|
7.0.0 |
Falls ob_start() innerhalb eines bereits aktiven Callbacks
aufgerufen wird, erzeugt diese Funktion nicht länger den Fehler E_ERROR ,
sondern E_RECOVERABLE_ERROR . Dies erlaubt es eigenen
Funktionen zur Fehlerbehandlung solche Fehler zu verarbeiten.
|
5.4.0 |
Der dritte Parameter der Funktion ob_start() wurde von
einem Paramter erase vom Typ boolean
(der, wenn auf FALSE gesetzt, verhindert, dass der Ausgabepuffer vor dem
Skriptende gelöscht werden konnte) zu einem integer Parameter
namens flags geändert. Leider resultiert dies in einem
API-Kompatibilitätsbruch für Code, der vor PHP 5.4.0 geschrieben wurde, und
den dritten Parameter nutzt.
Im Flags-Beispiel wird
gezeigt, wie entsprechender Code geschrieben werden kann, der mit beiden
Versionen kompatibel sein muss.
|
5.4.0 | Eine Datenblockgröße von 1 bewirkt nun, dass Datenblöcke von 1 Byte an den Ausgabepuffer gesendet werden. |
4.3.2 |
Diese Funktion wurde derart geändert, dass FALSE zurückgegeben wird, falls
der übergebene output_callback nicht ausgeführt
werden kann.
|
Beispiele
Beispiel #1 Beispiel einer benutzerkonfigurierten Callbackfunktion
<?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 auf eine Weise, die mit PHP 5.3 und 5.4 kompatibel ist
<?php
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^
PHP_OUTPUT_HANDLER_REMOVABLE);
} else {
ob_start(null, 0, false);
}
?>
Siehe auch
- ob_get_contents() - Gibt den Inhalt des Ausgabe-Puffers zurück
- ob_end_clean() - Löscht den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung
- ob_end_flush() - Leert (schickt/sendet) den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung
- ob_implicit_flush() - Schaltet die implizite Ausgabe ein bzw. aus
- ob_gzhandler() - ob_start callback function to gzip output buffer
- ob_iconv_handler() - Konvertiert Zeichensatzkodierung als Ausgabepuffer-Handler (output buffer handler)
- mb_output_handler() - Callback function converts character encoding in output buffer
- ob_tidyhandler() - ob_start callback function to repair the buffer
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-ob-start.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.