【问题标题】:Delete everything that has been echoed [duplicate]删除所有已回显的内容[重复]
【发布时间】:2012-12-17 05:52:02
【问题描述】:

可能重复:
How to clear previously echoed items in PHP

我有这个代码:

<?php

$var = true;
echo 'testing';

if ($var)
{
    echo 'Hey'; //The only thing that should appear.
}
?>

如何只让“嘿”出现在网站上?

【问题讨论】:

  • 删除echo 'testing'这一行。
  • 我不认为你想做的事情是可能的。据我所知(我肯定是错的),echo 立即将数据发送回请求者。阿洛斯,如果您不想将某些内容显示给客户,为什么还要回显它?
  • @inkedmn 在发送响应之前,数据不会推送到浏览器。巧妙地使用缓冲区和/或管理STDOUT 可用于通过echo 或类似函数覆盖输出。
  • 过于复杂只是让一个词出现在他的页面上..

标签: php


【解决方案1】:

不用太复杂...您可以将输出分配给变量并覆盖它。

$var = true;
$output = 'testing';

if($var)
{
    $output = 'Hey';
}

echo $output;

或者,(更复杂的路线),您可以使用缓冲区。研究 ob_start 以开始了解这一点。

【讨论】:

  • 我比我更喜欢这个解决方案
【解决方案2】:

你可以使用输出缓冲:

<?php
ob_start();
$var = true;
echo "testing";
if($var) {
    ob_clean();
    echo "Hey";
}

【讨论】:

  • 为什么会出错?这可能是一个过于简单的例子,但我偶尔会使用ob_clean 来“删除”输出并将其替换为错误消息。
  • @MattiVirkkunen 如果您不了解用例,很难判断这是否是错误的。问题中的代码显然是一个测试。不要惩罚回答问题的人。改为对问题投反对票或近距离投票,或给出认为正确的答案。
  • 判断对错不是我们的工作。除非是像 eval 或 SQL 注入这样的严重安全问题,否则这不关我们的事。
  • 我想要这样的东西。谢谢。是的,代码被简化了。这是将显示的错误消息。
  • 这个答案没有错。给了 OP 他想要的东西
【解决方案3】:

你不能,因为它已经打印出来了。

这是另一种解决方案

<?php
   $var = true;
   if($var)
       echo "Hey";
   else
       echo "testing"
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2021-02-28
    • 2018-04-03
    相关资源
    最近更新 更多