【问题标题】:Render PHP HTML page from variable从变量渲染 PHP HTML 页面
【发布时间】:2018-07-13 22:32:36
【问题描述】:

假设我有一个包含 html 页面的字符串变量。在那个 html 页面变量中,我有一个 echo 语句- 例如<?php echo 'whatever' ?>

我能否以某种方式将该变量“渲染”到浏览器,并让 php 评估变量中的所有 php 语句?

如果我只是回显变量,则 html 呈现良好但 php 语句不被评估。 如果我尝试在整个页面上运行 eval,它只会引发异常(有道理)。

我知道这一切听起来都是不好的做法,但我正在尝试找出一种方法来做到这一点,而无需将变量保存到文件并加载文件。

顺便说一句:我在 codeigniter 中完成了这一切,所以如果有办法在该变量上使用 $this->load->view...那就更好了:)

示例代码:

$x = /* Some logic to get a template data from another server */
/* $x is "<html><?php echo 'bla'; ?></html> */
echo $x;

这不起作用 - 尝试运行 echo eval($x) 也不起作用

【问题讨论】:

标签: php html codeigniter


【解决方案1】:

您可以将视图数据写入变量并在其他视图中使用此变量

在你的控制器中:

$data['view1'] = $this->load->view('my_view1', '', TRUE); // write view data to variable
$this->load->view('my_view2', $data);

在 my_view2 中:

<html>
<?=$view1?>
</html>

这个文档可以帮助你Returning views as data - Codeigniter

【讨论】:

    【解决方案2】:

    我不确定我是否关注你,但我认为这就是你想要的。

    如果page1_view.php 包含 HTML 并且需要回显一个变量。例如

    <div>Foo says: <?php echo $whatever; ?>!!!</div>
    

    要将“视图”作为一个字符串,并评估变量$whatever,您需要这个。

    $view_data['whatever'] = "Hello World";
    $page1 = $this->load->view('page1_view', $view_data, TRUE); 
    

    $page1 现在包含一个字符串,它是page1_view.php 的内容。在这种情况下

    "<div>Foo says: Hello World!!!</div>"
    

    【讨论】:

    • 我手里没有文件(你叫 page1_view.php),我有它的内容作为变量(“
      Foo 说:!!!
      ")
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2015-03-17
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多