如何PHP调用另一个页面并将输出作为变量?

如何PHP调用另一个页面并将输出作为变量?,php,Php,我想从一个PHP页面调用一个PHP页面,并以单个变量的形式返回我调用的页面的输出 require不适合我的用途,因为我需要将输出存储为变量以供以后使用,而不是立即输出 即: 更好的方法是将另一个页面中正在执行的任何操作封装为函数,然后可以从两个页面调用该函数。这使您可以重用代码,而无需处理输出缓冲等问题。require实际上正是您想要的(与输出缓冲相结合): 您可以使用file_get_contents方法,该方法返回一个包含您请求的页面内容的字符串- 我想从现有的.php文件创建pdf。 从以

我想从一个PHP页面调用一个PHP页面,并以单个变量的形式返回我调用的页面的输出

require
不适合我的用途,因为我需要将输出存储为变量以供以后使用,而不是立即输出

即:


更好的方法是将另一个页面中正在执行的任何操作封装为函数,然后可以从两个页面调用该函数。这使您可以重用代码,而无需处理输出缓冲等问题。

require
实际上正是您想要的(与输出缓冲相结合):


您可以使用file_get_contents方法,该方法返回一个包含您请求的页面内容的字符串-


我想从现有的.php文件创建pdf。
从以上答案中,我有3个选项:
1.rewrite.php文件
2.使用缓冲:

ob_start();
require 'page2.php';
$output = ob_get_clean();
$_GET["id"]="4";
ob_start();
include 'test.php';
$TextPDF = ob_get_clean();
3.通过url获取数据:

$serv = "http".( ($_SERVER["HTTPS"] == "on")?'s':'' )."://".$_SERVER["SERVER_NAME"];
$TextPDF = file_get_contents($serv.'/test.php?id=4');

我想我将使用第三个选项,这样我就不必修改现有文件。

要消除使用
文件获取内容()时的一些混淆,请注意:

  • 完整url一起使用将生成页面的html输出

    $contents = file_get_contents('http://www.example-domain.com/example.php');
    
    $contents = file_get_contents('./example.php');
    
  • 文件路径一起使用时将获得页面的源代码

    $contents = file_get_contents('http://www.example-domain.com/example.php');
    
    $contents = file_get_contents('./example.php');
    

  • 就我而言,所有发布的解决方案都不适合我。只有作者的评论有效。我想执行一个脚本,传递一些参数:

    anotherscript.php?param=value
    
    因此,解决方案是使用cURL:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http".( ($_SERVER["HTTPS"] == "on")?'s':'' )."://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/anotherscript.php?param=value");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    

    我会通过http://和cURL()调用它。让page2.php输出一个var,然后可以使用require\include。这个答案似乎解决了这个问题的一个特定子主题。如果您认为上面的一个答案是正确的,请将其标记为正确答案,而不是将其重新灰化。这是否允许将参数传递给调用的脚本?即要求“page2.php?foo=bar”;不,它不是,但是如果在同一台服务器上运行它,它确实共享全局$\u GET变量,因此您可以操纵它以获得所需的内容。
    anotherscript.php?param=value
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http".( ($_SERVER["HTTPS"] == "on")?'s':'' )."://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/anotherscript.php?param=value");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);