ob_start

(PHP 4, PHP 5)

ob_start -- Habilitar el uso de búferes de salida

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().

Hosting by: hurra.com
Generated: 2007-01-26 18:00:48