PHP kézikönyv
Előző |  | Következő

# ob_start

(PHP 4, PHP 5)

ob_start -- A kimenet pufferelés bekapcsolása

## Leírás

void ob_start ( [string output_callback] )

Ezzel a függvénnyel kapcsolhatjuk be a PHP saját belső kimenet pufferelési mechanizmusát. Ameddig a kimenet pufferelés be van kapcsolva, a fejlécadatokon kívül semmiféle kimenet nem hagyja el a PHP háza tájékát, az egy belső pufferben tárolódik.

Ennek a puffernek a tartalma az ob_get_contents() függvény segítségével változóba másolható. Ha végül szeretnénk a puffer tartalmát kiadni a php kezéből, akkor jön szóba az ob_end_flush(). Ha valamiért menet közben úgy döntünk, a puffer tartalma mégis felesleges, az ob_end_clean() csendben és titokban megsemmisíti a pufferünket tartalmastól, nem hagyja el egy bájt sem ekkor a php-t.

Az itt output_callback néven nevezett második, opcionális paraméter segítségével megadhatunk egy függvényt, melynek egy string típusú adatot kell paraméterként fogadnia, és ugyancsak stringet kell visszaadnia. Ez a megadható függvény akkor hívódik meg, amikor az ob_end_flush() meghívásra kerül, vagy a script végeztével a kimeneti puffer ürítésekor, automatikusan. Ekkor megkapja ez az output_callback paraméterben megadott függvény a puffer tartalmát, ezzel eljátszhadozhat, majd visszaadja a játszadozás eredményét, és ez kerül végül a php kimenetére.

> Megjegyzés: A 4.0.4-es PHP verziótól felfele létezik egy ob_gzhandler() nevű beépített php függvény, mely segítségével gz tömörített formában küldhetjük el adatainkat a böngésző fele. Az ob_gzhandler() erre csak akkor vetemedik, ha úgy találja, a böngésző ezt a gzip kódolt formátumot elfogadja. Ezt a függvényt tehát az ob_start() második paramétereként megadva használhatjuk fel.

A pufferek egymásba ágyazhatóak, azaz miközben már van aktív kimeneti pufferünk, hozhatunk létre még egyet. Viszont ez esetben biztosnak kell lennünk abban, hogy az ob_end_flush() megfelelő számban meg legyen hívva. Ha több output_callback is meg van ilyenkor adva, mindegyik pufferhez másfajta, akkor azok mind sorban végrehajtódnak az egymásba ágyazottság sorrendjében.

Az ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() és ob_start() nem hívható "callback" függvényekből. Ha callback függvényből hívod ezeket, a viselkedés nem definiált. Ha törölni szeretnéd egy buffer tartalmát, ad vissza "" (üres karaktersorozatot) a callback függvényből.

Példa 1. Felhasználó által írt puffermódosító függvény használata

`<?php function callback($buffer) { // minden sört borra cserélünk return (ereg_replace("Sörre", "Borra", $buffer)); } ob_start("callback"); ?> <html> <body> <p>Sörre bor, mindenkor! </body> </html> <?php ob_end_flush(); ?>`

A következő kimenet jön létre:

`<html> <body> <p>Borra bor, mindenkor! </body> </html>`

Lásd még: ob_get_contents(), ob_end_flush(), ob_end_clean(), ob_implicit_flush() és ob_gzhandler().

Előző | Tartalom | Következő
ob_list_handlers | Fel | output_add_rewrite_var