Aktueller Standort: Startseite> Neueste Artikel> Wie verwende ich OB_Get_Contents (), um den vollständigen Inhalt der Seite vor der Umleitung von PHP -Seite zu erhalten? Detaillierte Erläuterung der Betriebsmethode

Wie verwende ich OB_Get_Contents (), um den vollständigen Inhalt der Seite vor der Umleitung von PHP -Seite zu erhalten? Detaillierte Erläuterung der Betriebsmethode

gitbox 2025-08-23
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * Dieses Beispiel dient nur zur Demonstration,Der vorherige Teil hat nichts mit dem Inhalt des Artikels zu tun
 * Sie können jeden Ort hier platzieren PHP Initialisierungslogik
 */</span>

</span><span><span class="hljs-variable">$start_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// Startzeit des Skripts aufnehmen</span></span><span>

</span><span><span class="hljs-comment">// Simulieren Sie einen Code, der sich nicht mit dem Artikel bezieht</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummy_log</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$message</span></span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'dummy.log'</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-string">' - '</span></span><span> . </span><span><span class="hljs-variable">$message</span></span><span> . PHP_EOL, FILE_APPEND);
}

</span><span><span class="hljs-title function_ invoke__">dummy_log</span></span><span>(</span><span><span class="hljs-string">"Besuchte die Artikelseite"</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 class="hljs-comment">/**
 * PHP So verwenden Sie die Seitenumleitung ob_get_contents() Holen Sie sich den vollständigen Inhalt der Seite?Detaillierte Erläuterung der Betriebsmethode
 *
 * existieren PHP In der Entwicklung,我们有时需要existieren执行 header('Location: ...') Vor dem Umleiten,
 * Erhalten Sie zunächst den vollständigen Ausgangsinhalt der aktuellen Seite zum Speichern oder Analyse,Hier kann die Funktion für Ausgangspuffer verwendet werden
 * ob_get_contents()。
 *
 * eins、Warum verwenden Sie die Ausgangspufferung??
 * -----------------------
 * existieren PHP Mitte,Normalerweise wird der Inhalt direkt an den Browser ausgegeben,eins旦输出后,PHP Sie können die von Ihnen gesendeten Headerinformationen nicht mehr ändern,
 * 这会导致existierenAnruf header() Erscheint beim Umleiten “headers already sent” Fehler。
 * Verwenden Sie die Ausgangspufferung(Output Buffering)Kann PHP 将输出暂存到内存Mitte,So können wir es lesen,
 * 又能existieren发送给浏览器前做处理。
 *
 * zwei、ob_get_contents() Die Rolle von
 * --------------------------
 * ob_get_contents() Wird verwendet, um den Inhalt des aktuellen Ausgangspuffers zu erhalten。Die Prämisse ist, dass es verwendet werden muss ob_start() Ausgangspufferung ist aktiviert。
 *
 * drei、Betriebsschritte
 * ----------------
 * 1. existieren页面最开始Anruf ob_start() Den Puffer einschalten。
 * 2. Seiteninhalt schreiben,Diese Inhalte werden vorübergehend im Puffer gespeichert, anstatt direkt ausgegeben zu werden。
 * 3. Anruf ob_get_contents() Holen Sie sich den Inhalt im Puffer。
 * 4. existieren获取内容后,Es kann in einer Datei gespeichert werden、Datenbank,Oder Analyse und Verarbeitung durchführen。
 * 5. 最后Anruf ob_end_clean() oder ob_end_flush():
 *    - ob_end_clean():Löschen Sie den Pufferinhalt,Nicht in den Browser ausgeben。
 *    - ob_end_flush():Ausgabepufferinhalt in den Browser ausgeben。
 * 6. existierenReinigen Sie den Puffer后执行 header('Location: ...') Umleiten。
 *
 * Vier、Beispielcode
 * ------------
 * 以下示例展示了wie何existieren重定向前获取页面内容并保存到文件:
 */</span>

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// 1. Den Puffer einschalten</span></span><span>

</span><span><span class="hljs-comment">// 2. Simulation der Seitenausgabe</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;h1&gt;Willkommen auf dieser Seite&lt;/h1&gt;"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;p&gt;Hier ist der Inhalt der Seite。&lt;/p&gt;"</span></span><span>;

</span><span><span class="hljs-comment">// 3. Holen Sie sich den Pufferinhalt</span></span><span>
</span><span><span class="hljs-variable">$pageContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();

</span><span><span class="hljs-comment">// 4. Inhalt in Datei speichern</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'page_backup.html'</span></span><span>, </span><span><span class="hljs-variable">$pageContent</span></span><span>);

</span><span><span class="hljs-comment">// 5. Reinigen Sie den Puffer</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();

</span><span><span class="hljs-comment">// 6. Umleitung durchführen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: https://www.example.com"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;

<span class="hljs-comment">/**
 * fünf、Dinge zu beachten
 * ------------
 * - 必须existieren任何实际输出前Anruf ob_start(),Andernfalls kann der Puffer Inhalte nicht erfassen。
 * - Wenn header() Vor der Umleitung gibt es bereits Ausgabe,Und Pufferung wird nicht eingeschaltet,Meldet einen Fehler。
 * - Der gespeicherte Inhalt enthält nur den aktuellen Inhalt PHP Skriptausgabe,Es sind keine externen Ressourcen enthalten(wie CSS、JS、Bild)。
 *
 * Zusammenfassen:
 * -----
 * ob_get_contents() 是existieren PHP Nützliches Werkzeug zum Ausgang vor der Seite "Ausgabe"。
 * Übereinstimmen ob_start()、ob_end_clean() Gleiche Funktion,可以existieren不影响 HTTP Im Fall des Kopfes,
 * 完整捕获页面内容用于备份oder处理,Ideal zum Protokollieren、Debugging und Caching -Szenarien。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>