PHP:抑制函数内的输出?

发布于 2024-07-13 00:25:16 字数 233 浏览 8 评论 0原文

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

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

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

What is the simplest way to suppress any output a function might produce? Say I have this:

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

And I want to call testFunc() and get its return value without "Testing" showing up in the page. Assuming this would be in the context of other code that does output other things, is there a good method for doing this? Maybe messing with the output buffer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

熊抱啵儿 2024-07-20 00:25:16

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

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

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

并且不会生成任何输出。

Yes, messing with the Output Buffer is exactly the answer. Just turn it on before you call your method that would output (not the function itself, but where you call it, you could wrap it around your whole script or the script flow, but you can make it as "tight" as possible by just wrapping it around the call of the method):

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

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

And no output is generated.

绝對不後悔。 2024-07-20 00:25:16

在这里:

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

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

Here you go:

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

"ob" stands for "output buffering", take a look at the manual pages here: http://www.php.net/outcontrol

橘虞初梦 2024-07-20 00:25:16

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

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

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

    echo $output;
?>

Yes you are on the right track as to leveraging PHP's output buffering functions, i.e. ob_start and ob_end_clean (look them up on php.net):

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

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

    echo $output;
?>
苍暮颜 2024-07-20 00:25:16

这不是就像在代码中应用一些条件一样简单吗?

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

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

Isn't it as easy as applying some conditions to your code?

I mean if variable = testing then output, else don't?

For functions that have a result that outputs direct to the browser like EVAL, you could capture the result in an ob_start.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文