2011-07-31 10 views
1

나는 지난 하루 동안 CURL을 망치고 있으며 반환 데이터를 파싱하는 방법을 파악할 수 없습니다. 응답에서 데이터를 추출하기 위해 REGEX를 작성할 수는 있지만 실제로는 누락 된 일부 기능이있는 것처럼 보입니다. 여기 내가 시도하고 싶은 것이 있습니다.PHP CURL 데이터 구문 분석

는 내가 그 3 가지를 얻을 수있는 방법이 있나요 다른 도메인으로 POST를하고 다시 3 가지 1. 응답 헤더 2. 응답 데이터 3. 세션 쿠키

을 얻으려면 따로 따로? 지금은 응답 헤더와 응답 데이터가 포함 된 일반 텍스트 응답 만 반환합니다. 나는 비슷한 것을 할 수 있기를 바란다

$Response = curl_exec($Curl_Connection); 
$ResponseData = $Response['Data']; 
$ResponseHeader = $Response['Header']; 
ResponseCookie = $Response['Cookie']; 

컬은 이와 비슷한 것을 제공합니까? 나는

답변

5

대답으로 :

no post data returned when requesting headers CURLOPT_HEADER. PHP CURL

추가 :

curl_setopt($Curl_Connection, CURLOPT_HEADER, TRUE); 

$Response = curl_exec($Curl_Connection); 
$curlHeaderSize=curl_getinfo($ch,CURLINFO_HEADER_SIZE); 

$ResponseData = mb_substr($result, $curlHeaderSize); 
$ResponseHeader = mb_substr($result, 0, $curlHeaderSize); 

preg_match_all('|Set-Cookie: (.*);|U', $ResponseHeader, $content); 
$ResponseCookie = implode(';', $content[1]); 
+0

예이 종류의 질문에 대한 답변입니다. 그러나 그런면에서는 그렇지 않습니다. 나는 아직도 응답 헤더를 얻는 방법을 모르지만 여전히 시체를 돌려 보낸다. 다른 부분은 요청 헤더에있는 쿠키입니다. 어떻게 보입니까? – DvideBy0

+0

나는 너를 사랑해, 나는 결코 바보 야. mb_substr :) – DvideBy0

3

을 컬 문서에 따르면

/* TRUE to include the header in the output. */ 
curl_setopt($Curl_Connection, CURLOPT_HEADER, TRUE); 

그래서 헤더 curl_exec 명령의 출력에 추가 . 나는 이것을 밖으로 뱉어 왔으며 응답 본문과 별도로 헤더를 검색 할 방법을 찾지 못했습니다. 압축 된 출력 (압축, 팽창)을 읽을 때 악화되기 시작합니다.

맨 위에는 큰 문자열이 아니라 배열이므로 예를 들어 curl_getinfo와 같은 형식으로 헤더를 원할 경우 배열.

가장 쉬운이 작업을 수행하는 것입니다까지 그 둘을 분리,하지만 당신은 응답 헤더가 아니라 훨씬 더 도움이 될 것입니다 배열에 대한 문자열로 끝날 것

$backend_output = curl_exec($ch); 
list($backend_response_headers, $backend_response_body) 
     = explode("\r\n\r\n", $backend_output, 2); 

. 이제 그로부터 arrray를 만드는 것은 아주 분명하지 않습니다. 정규식을 사용하더라도/(\ w) \ s와 같은 단순한 것을 분리 할 수는 없기 때문에 : (\ w)/as ':'는 특정 필드에서 발생할 수 있습니다 . 컬이 헤더를 별도로 제공한다면 매우 좋을 것입니다.하지만 문서를 검토 할 때까지는 그렇지 않습니다.

세션 쿠키에 관해서는 CURLOPT_COOKIESESSION = true 옵션을 사용해야한다고 생각하지만 쿠키를 사용하는 전문가의 필요성이 거의 없기 때문에 쿠키 사용 경험이 적습니다. 행운을 빌어 요

업데이트 : 당신이 pecl이없는 경우 http://php.net/manual/en/function.http-parse-headers.php 또는 사용자 주석 섹션의 사용자 정의 기능으로 구문 분석 할 수있는 헤더.