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

时间:2013-11-13 07:10:53

标签: php curl

在发出两个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;
}

1 个答案:

答案 0 :(得分:1)

使用

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

然后使用

捕获返回的内容
function stuff() {
    // function code before

    $r = curl_exec($ch);

    // function code after

    return $r;
}

请勿使用任何ob_函数,因为CURLOPT_RETURNTRANSFER未明确设置为true1 curl将不会返回或打印出任何内容来自请求。