PHP 捕获 eval 输出
Posted
技术标签:
【中文标题】PHP 捕获 eval 输出【英文标题】:PHP catch eval output 【发布时间】: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;
?>
【问题讨论】:
【参考方案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_clean
或ob_end_clean
。
【讨论】:
以上是关于PHP 捕获 eval 输出的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 ReferenceError:jQuery 未在 eval 中定义
Monolog:捕获错误/异常并在响应中输出消息的处理程序(根据 PHP 默认)