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_clean
或 ob_end_clean
。
我想捕获 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_clean
或 ob_end_clean
。