Descripción
bool
ob_start ( [callback llamada_de_retorno_salida [, int tamanyo_segmento [, bool borrar]]] )
Esta función habilitará el uso de búferes de
salida. Mientras los búferes de salida están
activos no se envÃa salida desde el script (más que
las cabeceras), en su lugar la salida es almacenada en un
búfer interno.
Los contenidos de este búfer interno pueden ser copiados a
una variable de cadena usando
ob_get_contents(). Para producir la salida de
lo que está almacenado en el búfer interno, use
ob_end_flush(). Alternativamente,
ob_end_clean() descartará
silenciosamente los contenidos del búfer.
Es posible especificar una función opcional
llamada_de_retorno_salida. Esta
función recibe una cadena como parámetro y debe
devolver una cadena. La función será llamada cuando
se llame ob_end_flush(), o cuando el
búfer de salida sea volcado al navegador al final de la
petición. Cuando se llama
output_callback, éste
recibirá los contenidos del búfer de salida como su
parámetro y se espera que devuelva un nuevo búfer
de salida como resultado, valor que será enviado al
navegador. Si la llamada_de_retorno_salida
no es una función que pueda llamarse, se devolverá
FALSE. Si la llamada de retorno tiene dos parámetros, el
segundo parámetro es llenado con un campo de bits
consistente de PHP_OUTPUT_HANDLER_START,
PHP_OUTPUT_HANDLER_CONT y
PHP_OUTPUT_HANDLER_END.
Nota:
En PHP 4.0.4 se introdujo ob_gzhandler() para
facilitar el envÃo de datos codificados con el algoritmo
gz a navegadores web con soporte para páginas web
comprimidas. ob_gzhandler() determina el
tipo de contenido que aceptará el navegador y
devolverá su salida acordemente.
Nota:
Antes de PHP 4.3.2 esta función no devolvÃa
FALSE en caso de que
llamada_de_retorno_salida no pudiera
ejecutarse.
| Aviso |
Algunos servidores web (p.ej. Apache) modifican el directorio de
trabajo de un script cuando se ejecuta la llamada de retorno. Es
posible modificarlo de vuelta p.ej. mediante
chdir(dirname($_SERVER['SCRIPT_FILENAME']))
en la llamada de retorno.
|
Si se pasa el parámetro opcional
tamanyo_segmento, la llamada de retorno es
ejecutada en cada primera nueva lÃnea después de
tamanyo_segmento bytes de salida. El
parámetro llamada_de_retorno_salida
puede evitarse pasando el valor NULL.
Si el parámetro opcional borrar es
definido como FALSE, el búfer no será eliminado
hasta que el script finalice (a partir de PHP 4.3.0).
Los búferes de salida pueden apilarse, es decir, es
posible llamar ob_start() mientras que otro
ob_start() está activo. Simplemente
asegúrese de llamar ob_end_flush() el
número apropiado de veces. Si múltiples llamadas de
retorno están acivas, la salida es filtrada
secuencialmente a través de cada una de ellas en orden de
anidamiento.
No deben llamarse ob_end_clean(),
ob_end_flush(), ob_clean(),
ob_flush() ni ob_start()
desde una llamada de retorno. De hacerse, el comportamiento es
indefinido. Si desea eliminar los contenidos de un búfer,
devuelva "" (una cadena nula) desde la llamada de retorno. No es
posible siquiera llamar funciones que usen el mecanismo de
búferes de salida como print_r($expresion,
true) o highlight_file($nombre_archivo,
true) desde una llamada de retorno.
Ejemplo 1. Ejemplo de una llamada de retorno del usuario
<?php
function llamada_retorno($bufer) { // reemplazar todas las manzanas con naranjas return (str_replace("manzanas", "naranjas", $bufer)); }
ob_start("llamada_retorno");
?> <html> <body> <p>Es como comparar manzanas con naranjas.</p> </body> </html> <?php
ob_end_flush();
?>
|
ProducirÃa:
<html>
<body>
<p>Es como comparar naranjas con naranjas.</p>
</body>
</html> |
|
Vea también ob_get_contents(),
ob_end_flush(),
ob_end_clean(),
ob_implicit_flush(),
ob_gzhandler(),
ob_iconv_handler()
mb_output_handler(), f
ob_tidyhandler().