【问题标题】:heredoc with eval code execution带有 eval 代码执行的 heredoc
【发布时间】:2010-11-18 21:30:11
【问题描述】:

我尝试了几种方法来尝试使其正常工作,但都没有成功!

我有一个这样的页面(示例):

<?php
$jj = <<<END
?>
<h1>blah blah</h1>
<p> blah blah blah blah blah blah blah <?php include("file.php"); ?> blah blah</p>
<?php
END;
eval('?>'.$jj.'<?php ');
?>

这导致没有输出什么的,想不出解决办法!

【问题讨论】:

    标签: php eval heredoc


    【解决方案1】:

    这将不起作用,因为 eval 只需要 PHP 代码(即不被 标签包围),因此对 eval() 的调用可能会因解析错误而失败。

    我建议改用输出缓冲,例如:

    <?php
    //start output buffering, anything outputted should be stored in a buffer rather than being sent to the browser
    ob_start();
    ?>
    
    <h1>blah blah</h1>
    <p> blah blah blah blah blah blah blah <?php include("file.php"); ?> blah blah</p>
    
    <?php
    //get contents of buffer and stop buffering
    $content = ob_get_clean();
    echo $content;
    ?>
    

    【讨论】:

    • 内容需要被放入一个字符串中...有没有办法这样做?
    • 你可以把它放在一个heredoc中,但它不会被解析。但是,他之后使用 eval ......
    • @johnnnnnnnnnnnnnnnny : $content 将包含从输出缓冲区返回的评估字符串。
    • 更新了我的答案,我回答得太快了,有点误解
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多