2012-12-05 65 views
0

是否可以执行PHP代码到变量?例如,我有在同一目录index.phppage.php文件。如果您执行page.php,您将拥有一部分HTML页面。我想把它作为一个字符串放入index.php的变量中。 有什么建议吗?执行PHP代码插入变量

+0

一切看看在http:// ES2 .php.net /手动/ EN/function.file-GET-contents.php – Lobo

+0

你想要的page.php文件的结果是index.php文件的结果的一部分? – ppeterka

+1

@Lobo的OP要评估的结果,而不是原始内容,我认为...... – ppeterka

回答

4

您可以使用输出缓冲:

<?php 
ob_start(); 
include('page.php'); 
$page = ob_get_clean(); 
?> 

介意page.php文件是在同样的情况下仍执行(全局变量,函数等继续存在)

通常做这样的事情听起来像破碎的设计和page.php应该重写正确。

+0

+1,但是这会将来自其他脚本的变量带入范围,这是不必要的。 –

+0

这对我来说工作得很好。谢谢 –

2
include('page.php'); 

这将包括一切从page.phpindex.php

+0

不,运行脚本,但没有得到输出。 –

+0

我需要把一个字符串放入一个变量,而不仅仅是'include' –

0

你可以使用cURL检索脚本的输出并保存到一个变量。这里是你的index.php中做什么:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, ‘page.php’); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$contents = curl_exec ($ch); 

请注意,这是不必要的,包括其他的脚本(以及相关的变量)到您的网页时,所有你想要的是响应。包括脚本意味着你必须避免变量名,函数名等之间的冲突

0

如果你想执行的从page.php文件,你的代码,您可以包括文件,并进行功能这样page.php文件:

<?php include('page.php'); 
    $test = function MyHtmlCode(); 
    echo $text; 
?> 
+0

运行脚本,但不会得到输出。 –

-1

您没有提供示例代码,因此我会假定该页面实际上是打印的(使用echo,print等),然后您可以使用php output buffering

<?php 


ob_start(); 

require_once('index.php'); 

$out = ob_get_contents(); 

ob_end_clean(); 

?> 

(编辑)

这是一个解决方案,但它的挑衅不是最好的做法......这将是,但此举打印HTML成生成HTML并返回函数的代码,然后将这些函数移动到一个单独的文件中,该文件将包含在index.php和page.php中,然后简单地调用这些函数。包括一个应该打印某些输出的文件,并用输出缓冲区对其进行翘曲会使代码变得不可读和混乱。

-1

你应该试试这个:

ob_start() 
include('page.php'); 
$variable = ob_get_clean(); 

这将启动一个输出缓冲器,包括page.php文件,并把已写入到输出缓冲区$variable