PHP:抑制函数内的输出?

时间:2009-01-28 01:47:22

标签: php function output-buffering

抑制函数可能产生的任何输出的最简单方法是什么?说我有这个:

function testFunc() {
    echo 'Testing';
    return true;
}

我想调用testFunc()并获取其返回值,而不会在页面中显示“Testing”。假设这将是 输出其他东西的其他代码的上下文,有没有一个很好的方法来做到这一点?可能搞乱了输出缓冲区?

4 个答案:

答案 0 :(得分:58)

是的,弄乱Output Buffer就是答案。只需在调用输出的方法之前打开它(不是函数本身,但是在你调用它的地方,你可以将它包装在你的整个脚本或脚本流程中,但是你可以尽可能地使它“紧密”将它包裹在方法调用周围):

function foo() {
  echo "Flush!";
  return true;
}

ob_start();
$a = foo();
ob_end_clean();

并且没有生成输出。

答案 1 :(得分:10)

你走了:

ob_start();
testFunc();
ob_end_clean();

“ob”代表“输出缓冲”,请在此处查看手册页:http://www.php.net/outcontrol

答案 2 :(得分:3)

是的,你正在利用PHP的输出缓冲功能,即ob_start和ob_end_clean(在php.net上查找):

<?php
  function testFunc() {
    echo 'Testing';
    return true;
  }

    ob_start();
    $output = testFunc();
    ob_end_clean();

    echo $output;
?>

答案 3 :(得分:0)

是否像在代码中应用某些条件一样简单?

我的意思是如果变量=测试然后输出,否则不是吗?

对于具有直接向浏览器输出结果的函数,例如EVAL,您可以在ob_start中捕获结果。