如何将PHP输出捕获到变量中

时间:2012-06-12 08:21:19

标签: php http-get

我一直想这样做,因为我的网站每页加载大约3个HTTP请求,因为每个PHP的输出都是用cURL检索的。这太慢了,我想避免使用cURL。我在Stack Overflow上找到this question,它基本上做了我想要的。接受的答案建议是使用ob_start();开始获取输出,然后使用ob_get_clean();将输出放入变量中。我现在的问题是PHP脚本我试图从使用HTTP Get传递给它们的需求变量中捕获输出。访问这些变量:

$term = $_GET['term'];

我不想改变它,因为虽然我将从另一个PHP脚本访问这些PHP脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法欺骗这些PHP脚本通过Get接受一些参数,然后使用上面建议的方法捕获它们的输出?

3 个答案:

答案 0 :(得分:2)

如果设置了任何php脚本,你可以$ _GET变量(使用isset来检查)。然后,只要cURL到这样的网址就行了。

如果您之前已将方法更改为POST,则可以使用CURLOPT_HTTPGET。有关详细信息,请参阅curl_setopt函数页面(http://www.php.net/manual/en/function.curl-setopt.php)。

对于非cURL方法,请使用jQuery ajax。使用起来非常简单,只需阅读文档here

编辑:这是你想要的(虽然没有检查过代码)

<?php

function get_include_contents($filename, $get) {
 if (is_file($filename)) {
    ob_start();
    $_GET = array();
    while (list($key, $val) = each($get)) {
      $_GET[$key]=$val;
    }
    include $filename;
    return ob_get_clean();
 }
 return false;
}

$string = get_include_contents('somefile.php', array('param1'=>'x', 'param2'=>'y'));

?>

答案 1 :(得分:1)

  

我不想改变它,因为虽然我将从另一个PHP脚本访问这些PHP脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法欺骗这些PHP脚本通过Get接受一些参数,然后使用上面建议的方法捕获它们的输出?

你的问题有点不清楚为什么你首先使用cURL。如果您的脚本位于同一服务器上,则只需设置正确的$_GET变量并使用:

即可
<?php
ob_start( );
// include the file.
$_GET['foo'] = 'bar';
include 'the_file.php';

$output = ob_get_clean( );

如果您的脚本位于其他服务器上,其中包含不可行,那么始终必须执行HTTP请求才能获取其内容,无论您使用cURL还是Ajax,或者我关心的所有插座。

答案 2 :(得分:0)

你可以从任何加载的脚本访问$ _GET,只要它在URI中,变量$ term就可以在任何脚本中使用。您还可以包含脚本。

当您包含脚本时,您可以在包含后访问其中的一些内容。