【问题标题】:PHP catch eval outputPHP 捕获 eval 输出
【发布时间】:2021-12-30 09:09:42
【问题描述】:

我想catch eval 执行 的输出并且只看到 $B 的输出 ,有什么解决办法吗?

如果我执行这样的代码,我会得到两次输出:

首先来自评估

$B 秒

请不要问我为什么要使用 eval,而那个 eval 是邪恶的。

对于这个例子,我需要一个解决方案。

<?php
  $A = '<?php echo "Output"; ?>';
  eval(" ?> $A <?php ");
  $B = ob_get_contents();
  echo $B;
?>

【问题讨论】:

    标签: php caching eval


    【解决方案1】:

    您没有显示它,因此您需要使用ob_start 开始缓冲。然后获取并清理缓冲区,以便在执行结束时缓冲区为空ob_get_clean

    <?php
      ob_start();
      $A = '<?php echo "Output"; ?>';
      eval(" ?> $A <?php ");
      $B = ob_get_clean();
      echo $B;
    ?>
    

    您也可以在ob_get_contents 之后的某个位置使用ob_cleanob_end_clean

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多