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

字符串包含带有PHP标记的HTML,执行PHP并注入HTML,php,html,Php,Html,我有一个包含HTML的字符串,其中包含PHP代码的PHP标记,如下所示: $str = "<div> Colors:<br/> <?php foreach ($colors as $c) { echo $c . "<br/>" } ?> </div>" $str=” 颜色: " 评估PHP代码并将其注入字符串的最佳方法是什么?很像字符串内容作为单个PHP页面运行时会发生的情况。我在考虑做一些类

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

$str = "<div>
  Colors:<br/>
  <?php
    foreach ($colors as $c) {
      echo $c . "<br/>"
    }
  ?>
</div>"
$str=”
颜色:
"
评估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
        }
    }
$html\u php\u split=preg\u split(“/()/”,$str);
对于($i=0;$i

但如果PHP标记位于字符串的开头,则会出现问题。这可以通过一些附加条件来解决,但这一切对于我想要实现的目标来说似乎非常复杂。有更好的方法吗?

也许您可以用以下方法评估代码:

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

ob_start:此功能将打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本发送任何输出(头除外),而是将输出存储在内部缓冲区中。来源:

这很有效,谢谢!仍然有点混乱,我必须保存,然后从文件中导入字符串,但最好使用我的解决方案。