从变量渲染PHP HTML页面

时间:2018-07-13 10:14:54

标签: php html codeigniter

说我有一个包含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)也不起作用

2 个答案:

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

答案 1 :(得分:0)

我不确定是否跟随您,但我想这就是您想要的。

如果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>"