【问题标题】:String containing HTML with PHP tags, execute the PHP and inject into the HTML包含带有 PHP 标记的 HTML 的字符串,执行 PHP 并注入 HTML
【发布时间】:2015-03-19 13:07:31
【问题描述】:

我有一个包含 HTML 的字符串,其中包含 PHP 代码的 PHP 标记如下:

$str = "<div>
  Colors:<br/>
  <?php
    foreach ($colors as $c) {
      echo $c . "<br/>"
    }
  ?>
</div>"

评估 PHP 代码并将其注入回字符串的最佳方法是什么?就像字符串内容只是作为单个 PHP 页面运行时会发生的情况一样。我正在考虑做类似的事情:

$html_php_split = preg_split("/(<\?php|\?>)/", $str);
    for ($i = 0; $i < count($html_php_split); $i++) {
        if ($i % 2) {
            // eval code
        }
        else {
            // keep string
        }
    }

但是如果 PHP 标记位于字符串的开头,这会导致问题。这可以通过一些额外的条件来解决,但这对于我想要实现的目标来说似乎非常复杂。有没有更好的办法?

【问题讨论】:

    标签: php html


    【解决方案1】:

    也许你可以用这种方式评估你的代码:

    ob_start();
        include $filename; // File with your String
        $contents = ob_get_contents();
    ob_end_clean();
    

    ob_start:此函数将打开输出缓冲。当输出缓冲处于活动状态时,脚本不会发送任何输出(标题除外),而是将输出存储在内部缓冲区中。来源:http://php.net/manual/en/function.ob-start.php

    【讨论】:

    • 这行得通,谢谢!我必须保存然后从文件中导入字符串仍然有点混乱,但我的解决方案更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2014-10-29
    • 2012-01-20
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多