Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HTML字符串中回显PHP代码_Php_Codeigniter - Fatal编程技术网

在HTML字符串中回显PHP代码

在HTML字符串中回显PHP代码,php,codeigniter,Php,Codeigniter,我试图通过一个模板变量显示一块HTML文本,但它似乎没有处理PHP。我目前在我的观点中使用它(这是codeigniter) HTML包含两个带有php标记的位置,我希望这些位置在页面被echo'd时被加载。有办法做到这一点吗 我需要它从我传入的HTML变量开始工作的主要原因是,这是页面创建者的一部分,我需要能够在其中扑通php条件,而不是在每个页面中 有一种方法可以做到这一点,但它不好:eval() 我能想到的最快的方法(尽管如果我知道$html是如何创建的,可能会找到更好的解决方案)是将内

我试图通过一个模板变量显示一块HTML文本,但它似乎没有处理PHP。我目前在我的观点中使用它(这是codeigniter)


HTML包含两个带有php标记的位置,我希望这些位置在页面被echo'd时被加载。有办法做到这一点吗


我需要它从我传入的HTML变量开始工作的主要原因是,这是页面创建者的一部分,我需要能够在其中扑通php条件,而不是在每个页面中

有一种方法可以做到这一点,但它不好:
eval()


我能想到的最快的方法(尽管如果我知道
$html
是如何创建的,可能会找到更好的解决方案)是将内容塞进一个tmp文件,然后将其包含在内。然而,这实际上是一个警告标志,表明程序存在架构问题(例如,为什么在创建$html时不能进行php插值?)

编辑,来自Drupal7 正如您在评论中所暗示的,Drupal 7确实包含我所说的技巧:在传递给
eval
的代码中预先添加一个PHP结束标记,然后它将像普通PHP一样处理它,包括:

来自Drupal 7的./modules/php/php.module,第79行左右,稍作修改:

ob_start();
print eval('?>' . $html);
$output = ob_get_clean();

我个人会
ob
从一个文件中提取这个,缓冲它,然后使用
get\u ob\u clean
得到结果,如下所示:

    ob_start();
        include 'temp_file_with_html_in';
        $view = ob_get_contents();
    ob_end_clean();
注:

  • 你的英语不清楚,所以我不确定你到底想要什么
  • 这可能不完全符合您的需要

也许更好地解释一下
$html
是什么以及它是如何来源的会有所帮助?

因此
$html
变量是一个字符串,其中包含
听起来像是你想要做什么,这意味着你的设计可能有更根本的错误<代码>评估()==√邪恶
-不要这样做<代码>isset($var)&&!空($var)→ <代码>!空($var)-您不需要多余的
isset
。如果
$html
的内容类似于模板(即
有人将被视为“邪恶”的东西投了更高的票),则eval将不起作用在编程和一些不应该对这个问题起作用的东西中?嗯……这可能会起作用,但我很好奇Drupal是如何做到的。他们在他们的文章中使用了类似的东西。我在Drupal 7中发现了一些有趣的东西,不确定这是否是他们在您提到的功能中使用的东西,但它可能更符合您的期望……注意,hoever,Drupal的./includes/文件夹包含许多强烈的评论,敦促人们不要使用eval。。。
$tmpFile = tempnam('/tmp', 'my_app_namespace');
file_put_contents($tmpFile, $html);
include $tmpFile;
unlink($tmpFile); // cleanup
ob_start();
print eval('?>' . $html);
$output = ob_get_clean();
    ob_start();
        include 'temp_file_with_html_in';
        $view = ob_get_contents();
    ob_end_clean();