PHP 将 cURL 返回 HTML 作为函数返回字符串,而不是输出到客户端


PHP have cURL return HTML as function return string instead of outputing to client

在发出两个cURL请求后,第二个请求我想捕获返回的HTML并将其作为字符串传递回调用函数。现在,它将 HTML 输出到客户端。我搞砸了ob_end_clean()ob_get_contents()没有成功。

这是我目前拥有的...

function stuff()
{
 //user/pass stuff omitted.
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
 curl_setopt($ch,CURLOPT_HEADER,0);
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
 curl_setopt($ch,CURLOPT_COOKIEFILE,$cookies);
 curl_setopt($ch,CURLOPT_POSTFIELDS,"user=$cp_user&pass=$cp_pwd");
 curl_setopt($ch,CURLOPT_TIMEOUT,100020);
 ob_start();
 $f = curl_exec($ch);
 $h = curl_getinfo($ch);
 $p0 = explode('cpsess',$h['url']);
 $p1 = explode('/',$p0[1]);
 ob_end_clean();
 /***/
 ob_start();
 curl_setopt($ch,CURLOPT_URL,$q2a.$p1[0].$q2b);
 curl_setopt($ch,CURLOPT_HEADER, 0);
 curl_exec($ch);
 $r = ob_get_contents();
 ob_end_clean();
 /***/
 curl_close($ch);
 return $r;
}

使用

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

然后捕获返回的内容

function stuff() {
    // function code before
    $r = curl_exec($ch);
    // function code after
    return $r;
}

不要为此使用任何ob_函数,因为如果CURLOPT_RETURNTRANSFER未显式设置为 true 1则 curl 不会返回或打印出请求中的任何内容。