PHP 捕获 eval 输出

PHP catch eval output

我想捕获 eval 执行 的输出并且只看到 $B[=27 的输出=] ,有什么解决办法吗?

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

首先来自 eval

第二个来自$B

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

我需要这个例子的解决方案。

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

你没有显示它所以你需要开始缓冲 ob_start. Then get and clean the buffer so that the buffer will be empty at the end of execution 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