Aktueller Standort: Startseite> Neueste Artikel> Wie verwendete ich Ob_Get_Contents () und ob_start () Mehrschicht-Verschachtelung in PHP? Analyse der praktischen Fähigkeiten

Wie verwendete ich Ob_Get_Contents () und ob_start () Mehrschicht-Verschachtelung in PHP? Analyse der praktischen Fähigkeiten

gitbox 2025-09-08
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Bereits bestehender irrelevanter Inhalt -------------------</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Dies sind einige Dinge, die nicht mit dem Inhalt des Artikels zusammenhängen PHP Ausgangsbeispiel。\n"</span></span><span>;
</span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelle Zeit: <span class="hljs-subst">$time</span></span></span><span>\n";
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Starten Sie den Text -------------------</span></span><span>

<span class="hljs-comment">/**
 * Titel: PHP Mitte ob_get_contents() Und ob_start() So verwenden Sie mehrschichtige Verschachtelung?Analyse der praktischen Fähigkeiten
 *
 * existieren PHP Mitte,Ausgangspufferung(Output Buffering)Es ist eine sehr nützliche Funktion,它允许你existieren脚本执行过程Mitte
 * Ausgangsinhalt erfassen,Anstatt es sofort an den Browser zu senden。`ob_start()` Und `ob_get_contents()` 是Ausgangspufferung
 * Mitte最常用的函数。Wenn Sie mehrschichtige Pufferungen benötigen, um die Ausgabe verschiedener Teile zu steuern,Es ist besonders wichtig zu verstehen, wie sie funktionieren。
 *
 * 1. ob_start() Die Rolle von
 * --------------------
 * `ob_start()` 启动一个新的Ausgangspufferung区。Alle Ausgänge danach(wie echo、print)Sie werden in diesen Puffer zwischengespeichert,
 * Anstatt es direkt an den Browser auszugeben。
 *
 * Beispiel:
 */</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Dies ist der Inhalt des ersten Schichtpuffer。"</span></span><span>;
</span><span><span class="hljs-variable">$content1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Holen Sie sich den aktuellen Pufferinhalt</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Ausgabe und beenden Sie den Puffer</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nDer Inhalt des ersten Puffer: <span class="hljs-subst">$content1</span></span></span><span>\n";

<span class="hljs-comment">/**
 * 2. Mehrschichtige verschachtelte Pufferung
 * ----------------
 * Wenn mehrschichtige Verschachteln erforderlich sind,Kann mehrmals aufgerufen werden ob_start(),Jedes Mal, wenn der Anruf aufgerufen wird, wird ein neuer Puffer erstellt,Eine Stapelstruktur bilden。
 * passieren ob_get_contents() Sie können den Inhalt des aktuellen Puffer erhalten,passieren ob_end_flush() oder ob_end_clean() 
 * Kann den aktuellen Puffer beenden。
 *
 * Beispiel:
 */</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Erste Schicht der Pufferung</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die erste Ebene beginnt\n"</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Zweite Pufferschicht</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Inhalt der zweiten Ebene\n"</span></span><span>;
</span><span><span class="hljs-variable">$secondLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// 获取Inhalt der zweiten Ebene</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// 清空Zweite Pufferschicht(Keine Ausgabe)</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Der erste Stock geht weiter\n"</span></span><span>;
</span><span><span class="hljs-variable">$firstLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Holen Sie sich die erste Inhaltsebene</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 输出Erste Schicht der Pufferung区内容</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nInhalt in der zweiten Schicht erfasst: <span class="hljs-subst">$secondLayer</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Inhalt in der ersten Ebene erfasst: <span class="hljs-subst">$firstLayer</span></span></span><span>\n";

<span class="hljs-comment">/**
 * 3. Praktische Tipps
 * ------------
 * - Verzögerte Ausgabe:passieren多层缓冲,Sie können den Inhalt zuerst verarbeiten,Ändern und Ausgabe。
 * - Vorlagewiedergabe:existieren渲染模板时,Sie können zuerst die Ausgabe pufferen,进行变量替换oder缓存后再输出。
 * - Protokollierung:Ausgangsinhalt erfassen到文件而不是直接输出。
 *
 * Dinge zu beachten:
 * - Jedes Mal ob_start() Alle müssen kooperieren ob_end_flush() oder ob_end_clean()。
 * - Zu viele verschachtelte Schichten können den Speicheraufwand erhöhen,Es wird empfohlen, den tatsächlichen Bedarf zu verwenden。
 *
 * 4. 综合Beispiel
 */</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTML Seitenkopfzeile\n"</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;p&gt;Betreff Inhalt&lt;/p&gt;\n"</span></span><span>;
</span><span><span class="hljs-variable">$bodyContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// Klar, aber nicht ausgeben</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;header&gt;Kopf&lt;/header&gt;\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$bodyContent</span></span><span>; </span><span><span class="hljs-comment">// 再次输出Betreff Inhalt</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Alle ausgeben</span></span><span>

</span><span><span class="hljs-comment">// ------------------- Ende des Textes -------------------</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Kein Inhalt am Ende -------------------</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文章结束Beispiel:Danke fürs Lesen!\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>