remove - PHP: ¿Suprime la salida dentro de una función?
strip_tags php ejemplo (4)
¿Cuál es la forma más simple de suprimir cualquier salida que pueda producir una función? Digamos que tengo esto:
function testFunc() {
echo ''Testing'';
return true;
}
Y quiero llamar a testFunc () y obtener su valor de retorno sin que aparezca "Testing" en la página. Suponiendo que esto sea en el contexto de otro código que genera otras cosas, ¿hay un buen método para hacerlo? Tal vez jugando con el buffer de salida?
Sí, estás en el camino correcto para aprovechar las funciones de búfer de salida de PHP, es decir, ob_start y ob_end_clean (búscalas en php.net):
<?php
function testFunc() {
echo ''Testing'';
return true;
}
ob_start();
$output = testFunc();
ob_end_clean();
echo $output;
?>
¿No es tan fácil como aplicar algunas condiciones a tu código?
Quiero decir si variable = testing luego output, else no?
Para las funciones que tienen un resultado que se envía directamente al navegador como EVAL, puede capturar el resultado en un ob_start.
Aqui tienes:
ob_start();
testFunc();
ob_end_clean();
"ob" significa "buffer de salida", eche un vistazo a las páginas del manual aquí: http://www.php.net/outcontrol
Sí, jugar con el buffer de salida es exactamente la respuesta. Simplemente enciéndalo antes de llamar al método que generará (no la función en sí misma, pero donde la llame, podría envolverla en todo el guión o en el flujo del guión, pero puede hacerlo lo más "ajustado" posible con solo envolviéndolo alrededor de la llamada del método):
function foo() {
echo "Flush!";
return true;
}
ob_start();
$a = foo();
ob_end_clean();
Y no se genera salida.