2012-11-14 2 views
3

일부 컬링 프로세스가 있는데 일부 사이트는 CURLOPT_HEADER, true을 설정해야합니다. 그러면 html 코드를 얻을 수 있습니다.CURLOPT_HEADER 반환 데이터를 제거하십시오

$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 ...)?

답변

9

CURLOPT_HEADER 사이트가 귀하에게 제공하는 내용에는 아무런 영향이 없습니다. 당신은 그것을 제거 할 수 있고 당신이 비어있는 내용을 되 찾는다면 - 뭔가 다른 것이 틀림 없습니다.

CURLOPT_HEADER은 단지 편의를 위해 서버가 스크립트에 대해 말한 것을 볼 수 있습니다. 일부 웹 API는 헤더에 데이터를 전달하므로 액세스 할 수 있습니다.

당신은 허용 대답의 솔루션은 좋은 쉬운이

list($header, $body) = explode("\r\n\r\n", $content, 2); // Notice the "2" limit! 
1

같은 헤더에서 콘텐츠를 분할 할 수 있지만 응답이 리디렉션되는 경우 예상대로 작동하지 않습니다. 여기

리디렉션 작동 다른 해결책이지만, 좀 더 줄 필요

$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 
관련 문제