【问题标题】:Clear echoed items PHP [duplicate]清除回显的项目PHP [重复]
【发布时间】:2022-01-03 13:35:00
【问题描述】:

我可以清除所有(已经)回显或打印的项目吗? 我不是在寻找输出缓冲。我正在寻找替代方案。

这是一个例子:

<?php

echo 'a';
print 'b';

The code I need

echo 'c';

The first two statements (echo and print) should not be present in the output
?>

【问题讨论】:

  • 您的问题还很模糊。首先,您必须告诉我们您在哪个环境运行此代码!浏览器或 CLI。 前两个语句(echo 和 print)不应该出现在输出中是什么意思它们应该如何消失
  • 来自浏览器页面或终端屏幕?
  • 不,你不能,在输出上回显写入,所以如果我们可以说它已经是你的程序了。你可以在你的终端上试一下whitha sleep,如果它出去了,你就无法控制。最好使用条件语句,不要试图删除你不想要的输出。
  • 输出缓冲的替代方法是将输出构建为字符串,然后您可以在适当的时间和地点输出结果。
  • @Enripro 您在标记的副本中看到this answer 吗?您的帖子也可能在审核期间被模组删除。由于您的要求与标记的重复问题相同,因此问题相同但单词不同是没有意义的。最初在 SO 上很难,但很快情况就会好转。

标签: php backend


【解决方案1】:

不,您写出的任何内容都会发送到网络服务器,然后再将其发送到浏览器。然而,PHP 中有一个名为 output buffering 的模块(临时)解耦输出流。

查看ob_start()ob_end_clean()

<?PHP

ob_start(); // output buffering enabled

// these echos will be buffered in memory, instead of written out as they usually would:
echo 'A';
echo 'B';
echo 'C';

// now we've moved the buffer into `$html` (so that now contains 'ABC'), and we've stopped output buffering.
$html = ob_get_clean();

echo 'D'; // this is being send to the client/webbrowser as usual

echo $html; // now we print the ABC we intercepted earlier


So the client will receive : D A B C

【讨论】:

  • @Enripro 对我们有一点抱怨很好,但是如果你问一个清晰描述得很好的问题,你会得到一个清晰描述得很好的答案,否则你会得到看起来像你这个愚蠢的问题,但他们不是
  • @Enripro 你必须记住,我们不是读心术的人,我们也不是在看你的肩膀。关于您的情况,我们所知道的只是您花时间告诉我们的。
  • @RiggsFolly 是的......你是对的。我仍然不明白,为什么每个人都只是对“小”投反对票。就像它不会帮助美国一样。当你这样做时,它可能看起来是一种很好的感觉,但它实际上根本没有帮助。 (至少对我来说)
  • 这不值得抱怨。 Stack Overflow 提供了关于如何在这里提问的非常详细的指南。凡是与此不符的,都要先批评。很少有用户在这里阅读有关如何提问的指南。出于这个原因,总是有一些问题过于开放,而且根本不详细。你不应该把它看得太个人化。
  • @Enripro 一旦达到一定数量的销售代表,我们鼓励您通过 Downvotes 和 Close Votes 协助管理本网站。这个想法是一个好的问题及其答案将成为其他人搜索以获得即时帮助而无需提出问题的有用资源。看看你的问题,你认为它对其他人有用吗?这毕竟是 SO 存在的主要原因。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2014-12-18
  • 2017-10-10
  • 2023-01-02
  • 2013-08-16
  • 1970-01-01
相关资源
最近更新 更多