3

我正在做一些 curl 过程,必须设置一些站点CURLOPT_HEADER, true,以便获得 html 代码。

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch2);
curl_close($ch2);
echo $html;

返回数据如下:

HTTP/1.0 200 OK  Date: Wed, 14 Nov 2012 17:58:26 GMT  Expires: Wed, 14 Nov 2012 18:08:26 GMT  Cache-Control: max-age=600... 
<html...

那么如何删除之前<html>的一些数据(CURLOPT_HEADER 返回数据:HTTP/1.0 200 OK...)?

4

2 回答 2

9

CURLOPT_HEADER不影响网站返回给您的内容。你可以删除它,如果你得到空的内容 - 那么还有其他问题。

CURLOPT_HEADER只是为了您的方便,这样您就可以看到服务器对您的脚本说了什么。某些 Web API 在标头中传递数据,这允许您访问它。

您可以像这样从标题中拆分内容

list($header, $body) = explode("\r\n\r\n", $content, 2); // Notice the "2" limit!
于 2012-11-14T18:10:38.450 回答
2

接受的答案中的解决方案既好又简单,但是如果重定向响应,它将无法按预期工作。

这是另一种适用于重定向的解决方案,但需要更多行:

$header_size=curl_getinfo($ch,CURLINFO_HEADER_SIZE);
$header=trim(substr($content,0,$header_size)); //Get the header and trim it to remove \r\n
$body=substr($content,$header_size); //Get the body
于 2015-11-22T20:31:41.173 回答