如何将PHP脚本**结果**包含在另一个PHP脚本中?

时间:2012-06-17 15:50:24

标签: php include

我想将给定脚本的结果(比方说a.php)包含在另一个脚本中(比方说b.php)。

虽然有PHP include语句和其他对应语句(include_once,require和require_once),但似乎它们都包含文件内容而不是我期望的处理结果。

那么如何首先处理a.php然后将其结果(不是文件内容本身)包含在b.php脚本中?

另一方面,如果我的包含文件(a.php)有一个return语句,那么整个文件是否应该首先处理,或者它的内容也按原样包含在b.php中?

提前感谢您的回复。

4 个答案:

答案 0 :(得分:4)

a.php只会:

<?php
echo "world";

b.php:

<?php
ob_start();
include("a.php");
$a= ob_get_clean();
echo "Hello, $a!";  

也许?

答案 1 :(得分:1)

听起来您想使用backtick operator后跟eval。 像这样:

$code = `/path/to/myscript.php`;
eval($code);

如果myscript.php不可执行,则必须使用php作为前缀,如:

$code = `php /path/to/myscript.php`;

请注意,您需要完全信任myscript.php,否则这是一个安全问题。

这可能不是一个非常好的设计,你可能想要考虑是否有更好的方法来做你想要的。

答案 2 :(得分:0)

如果可以通过网络访问a.php,则可以将file_get_contentshttp://(或https://)网址一起使用。这将像普通网页一样访问您的脚本,让您的Web服务器通过PHP处理它并返回结果。

a.php只会:

<?php

echo 2+2;

b.php:

<?php

echo file_get_contents('http://example.com/a.php');

输出:

4

您也可以使用输出缓冲,如上面DaveRandom的评论中所述。也就是说,这通常不是示例性应用程序设计。我们首选的代码将返回您需要的结果,而不是echo它们。也许是这样的:

a.php只会:

<?php

function calculateA()
{
    return 2+2;
}

b.php:

<?php

include('a.php');
echo calculateA();

输出:

4

编辑include page in the PHP documentation上有很多其他选择。

答案 3 :(得分:-1)

要点:

如果php文件属于您的服务器:

ob_start();
$result = eval(file_get_contents('/path/to/your/script.php'));
ob_end_clean();

如果没有,但可以通过HTTP访问:

$result = file_get_contents('http://path.to/your/script.php');