Standardmäßig senden Echo- oder andere Ausgabebeharten den Inhalt direkt an den Client (Browser). Nach dem Einschalten der Ausgangspufferung wird der Ausgang jedoch nicht sofort gesendet, sondern zuerst im Puffer gespeichert und erst dann ausgegeben, wenn der Puffer gelöscht oder das Skript fertig ist. Auf diese Weise können wir den Ausgangsinhalt während des ausgeführten Skripts erfassen, ändern und sogar umleiten.
OB_Get_Contents () wird verwendet, um den Inhalt im aktuellen Ausgangspuffer zu erhalten und die Zeichenfolge zurückzugeben. Wenn die Ausgabepufferung nicht aktiviert ist, gibt das Aufrufen der Funktion FALSE zurück.
<?php
// Ausgangspufferung einschalten
ob_start();
// Analoger Ausgangsinhalt
echo "Das ist was im Puffer ist。";
// Holen Sie sich den Pufferinhalt
$content = ob_get_contents();
// Verarbeiten Sie den Inhalt,Zum Beispiel die Zeichenfolge ersetzen
$processedContent = str_replace("Puffer", "Cache -Bereich", $content);
// 清空并关闭Puffer(Optional,Kann auch verwendet werden ob_end_flush() Direkte Ausgabe)
ob_end_clean();
// Die verarbeiteten Inhalte manuell ausgeben
echo $processedContent;
?>
Im obigen Beispiel:
Verwenden Sie Ob_Start () , um die Ausgangspufferung zu aktivieren.
Der inhaltliche Inhaltsausgang mit Echo wird im Puffer gespeichert.
Lesen Sie den Puffer -Inhalt in den Variablen $ Inhalt über ob_get_Contents () .
Ersetzen Sie den Inhalt durch eine Zeichenfolge, um $ processedContent zu erhalten.
Verwenden Sie OB_end_Clean (), um den Puffer zu löschen und zu schließen, um die wiederholte Ausgabe des Inhalts zu verhindern.
Schließlich können Sie den verarbeiteten Inhalt manuell ausgeben.
Wenn Sie eine einfache PHP -Template -Rendering verwenden und die Vorlagenausgabe erfassen möchten und dann eingestuft oder ändern oder geändert werden, ist die Ausgabepufferin sehr nützlich.
<?php
ob_start();
include 'template.php'; // Vorlagendateiausgabe HTML
$html = ob_get_contents();
ob_end_clean();
// Rechts $html Cache、Komprimierung oder andere Verarbeitung
file_put_contents('cache/page.html', $html);
// Endlich die verarbeitete Seite ausgeben
echo $html;
?>
Einige Bibliotheken von Drittanbietern geben Inhalte direkt aus, möchten jedoch diese Ausgänge, ein einheitliches Format oder die Verpackungsverarbeitung abfangen.
<?php
ob_start();
third_party_function(); // Direkte Ausgabe内容的函数
$output = ob_get_contents();
ob_end_clean();
// Zum Beispiel ist die Verpackung JSON Formatrückgabe
echo json_encode(['data' => $output]);
?>
Bevor Sie OB_Get_Contents () verwenden, müssen Sie sicherstellen, dass der Puffer eingeschaltet ist ( ob_start () heißt), ansonsten wird falsch zurückgegeben.
Das Aufrufen von ob_end_clean () kann den Puffer schließen und löschen, ohne Inhalte auszugeben. Das Aufrufen von OB_END_FLUSH () schließt den Puffer und gibt den Inhalt aus.
Der Ausgangspuffer kann verschachtelt werden, und Ob_get_Contents () erhält nur den Inhalt des aktuell aktiven Puffer.
ob_get_contents () ist ein leistungsstarkes Werkzeug, um den PHP -Ausgangsprozess zu steuern. In Kombination mit dem Ausgangspufferungsmechanismus kann verschiedene erweiterte Funktionen wie Vorlagenerfassung, Ausgangscache und dynamischer Inhaltsersatz realisieren. Wenn Sie die Prinzipien und Verwendungsmethoden der Ausgangspufferung beherrschen, verbessern Sie Ihre Kontrolle über die PHP -Ausgabe erheblich.