0

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

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

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

另一方面,如果我的包含文件 (a.php) 有一个 return 语句,是整个文件应该首先被处理还是它的内容也被包含在 b.php 中?

提前感谢您的回复。

4

4 回答 4

3

一个.php:

<?php
echo "world";

b.php:

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

也许?

于 2012-06-17T16:06:07.460 回答
1

听起来您想使用反引号运算符,后跟eval。像这样的东西:

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

如果 myscript.php 不可执行,则必须在其前面加上 php,如下所示:

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

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

这可能不是一个很好的设计,您可能需要认真考虑是否有更好的方法来做您想做的事情。

于 2012-06-17T15:58:32.763 回答
0

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

一个.php:

<?php

echo 2+2;

b.php:

<?php

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

输出:

4

您还可以使用输出缓冲,如上面 DaveRandom 的评论中所述。也就是说,这通常不是典型的应用程序设计。最好使用能够返回您需要的结果而不是返回结果的代码echo。所以也许是这样的:

一个.php:

<?php

function calculateA()
{
    return 2+2;
}

b.php:

<?php

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

输出:

4

编辑:includePHP 文档中的页面上详细介绍了几种替代方法。

于 2012-06-17T15:56:57.000 回答
-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');
于 2012-06-17T16:06:00.763 回答