【问题标题】:How can I get a PHP script **results** included into another PHP script?如何将 PHP 脚本 **results** 包含到另一个 PHP 脚本中?
【发布时间】:2012-06-17 15:50:24
【问题描述】:

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

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

那么我怎样才能先处理 a.php,然后将其结果(不是文件内容本身)包含到 b.php 脚本中?

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

提前感谢您的回复。

【问题讨论】:

  • 只需将 a.php 包含到 b.php 的顶部或脚本的开头
  • 您能否举个例子来说明一下,为什么包含/要求不适合您的需求?
  • 是的,include/require 似乎是您想要的,尽管您可能还需要 output buffering,例如ob_start(); include 'a.php'; $resultOfA = ob_get_clean();
  • 我相信 Themroc 和 georgefox 都提供了很好的答案。由于我的文件都在我的服务器内(不是外部的),Themroc 的答案更适用于我需要的东西,所以我会将他的答案标记为这个问题的解决方案。蒂姆,我听从了你的建议,对这种方法进行了更多研究。你完全正确。谢谢大家。

标签: php include


【解决方案1】:

a.php:

<?php
echo "world";

b.php:

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

也许?

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      如果a.php 可以通过网络访问,您可以使用file_get_contentshttp://(或https://)URL。这将像访问普通网页一样访问您的脚本,让您的网络服务器通过 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 上详细介绍了几种替代方案。

      【讨论】:

        【解决方案4】:

        总结:

        如果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');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-07
          • 2021-09-10
          • 1970-01-01
          • 2013-10-02
          相关资源
          最近更新 更多