我想将给定脚本的结果(比方说a.php)包含在另一个脚本中(比方说b.php)。
虽然有PHP include语句和其他对应语句(include_once,require和require_once),但似乎它们都包含文件内容而不是我期望的处理结果。
那么如何首先处理a.php然后将其结果(不是文件内容本身)包含在b.php脚本中?
另一方面,如果我的包含文件(a.php)有一个return语句,那么整个文件是否应该首先处理,或者它的内容也按原样包含在b.php中?
提前感谢您的回复。
答案 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_contents
与http://
(或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');