包含带有PHP标记的HTML的字符串,执行PHP并注入HTML

时间:2015-03-19 13:07:31

标签: php html

我有一个包含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标记位于字符串的开头,则会导致问题。这可以通过一些额外的条件来解决,但这对我想要达到的目标来说似乎都很复杂。还有更好的方法吗?

1 个答案:

答案 0 :(得分:-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