2012-08-27 44 views
1

这似乎应该是一个明显的,快速的解决方案,但事实并非如此。有没有一种方法,不使用eval()来读取预解析为最终HTML的本地PHP文件?

我有一个本地文件,可以完成一些数据库工作并输出HTML,我们称之为file1。我有另一个需要使用这些信息的文件,但不需要自己生成它,file2

我的计划是将预先解析的PHP(此处为HTML)拖入file2,但它取代了PHP代码。这显然可以用eval()来处理,但我宁可不要。沿着wget()行的东西可能会诀窍,但我宁愿不从我的PHP脚本运行命令行,如果可能的话。

有没有一种解决方案,同时避免上述两个选项,或者我不得不咬住子弹并使用其中之一?

快速说明:整个file1未被使用。 file2剔除它需要的部分,只需输出从file1产生的所有HTML是不可行的。

+1

听起来好像你应该使用[包括(http://php.net/manual/en/function.include.php),如果你想从文件2 – ernie

+0

那里获得文件1的部分“HTML中的”代码是从哪里来的?你相信它的来源? – netcoder

+0

这是我自己的脚本,所以我确实相信内容。 – Dan

回答

1

file_get_contents(“http://Full.URL”); 并使其通过30个字符..

- 编辑 -

确定。

当你在一个URL上尝试file_get_contents时,php会请求URL,就像一个好的o-wget一样。您也可以使用它来触发脚本。

检查http://www.php.net/manual/en/function.file-get-contents.php了解更多信息。

+0

这是一个很好的解决方案。唯一的缺点是你必须通过'TCP'请求文件作为'HTTP请求'来处理它(本地引用将读取源文件)。这(特别是如果指定了“FQDN”)将需要时间发送并通过互联网返回。当请求停留在内部网时,可能使用'localhost/PATH'会加快速度。 –

3

你可以尝试像下面的缓冲输出,并将其保存到一个变量:现在

ob_start(); 
include "file1.php"; 
$content = ob_get_contents(); 
ob_end_clean(); 

$content将包含源文件的“呼应”的输出。

ob_*功能是缓冲内容的家庭。他们暂时禁用将数据输出到STDOUT,而是将回显的内容存储在缓冲区中。 Documentation

Example on Ideone

+0

我遇到了同样的抽象问题,并且通过使用'include()'页面和'get_my_content()'使用该页面中的函数来生成工作解决方案来生成内容。 –

+0

@awashburn:这是另一个有效的解决方案,我只是不喜欢将函数中的所有内容封装在一个函数中(或者被要求用函数tbf做任何事情)。:) –

+1

可以理解,我的函数在文件解决方案中很聪明,但有点凌乱。我喜欢这些功能提供的方法,作为一个“更清洁”,但稍微深奥的解决方案。 –

相关问题