35

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

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

我想调用 testFunc() 并在页面中不显示“测试”的情况下获取其返回值。假设这将在输出其他内容的其他代码的上下文中,是否有这样做的好方法?也许弄乱了输出缓冲区?

4

4 回答 4

69

是的,弄乱输出缓冲区正是答案。只需在调用将输出的方法之前将其打开(不是函数本身,而是在调用它的位置,您可以将其包裹在整个脚本或脚本流中,但您可以通过仅使其尽可能“紧密”将它包装在方法的调用上):

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

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

并且不生成任何输出。

于 2009-01-28T01:54:12.947 回答
11

干得好:

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

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

于 2009-01-28T01:52:43.263 回答
4

是的,您在利用 PHP 的输出缓冲函数方面是正确的,即 ob_start 和 ob_end_clean(在 php.net 上查找它们):

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

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

    echo $output;
?>
于 2009-01-28T01:56:31.117 回答
0

对代码应用一些条件不是那么简单吗?

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

对于结果直接输出到浏览器(如 EVAL)的函数,您可以在 ob_start 中捕获结果。

于 2009-01-28T01:54:26.363 回答