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