2011-11-22 2 views
1

피드를 끌어 내려 XMLReader (또는 DOMdocument)를 사용하여 사용 가능한 태그 목록을 뱉어내는 RSS 스크래퍼를 코딩하려고합니다.PHP cURL과 file_get_contents가 다른 결과를 제공합니까?

내 호스트가 file_get_contents를 사용할 수 없도록 피드를 변수로 가져온 다음 XMLReader 또는 DOMdocument 인스턴스화의 "문자열에서로드"방법을 사용합니다 (두 방법을 모두 시도했습니다).

로컬 상자 (file_get_contents를 활성화)에서 테스트하면 스크립트에서 XML 태그를 추출 할 수 있습니다. 그러나 내가 cURL을 사용할 때 오류 범위가 생깁니다.

나는 이미 html_entity_decode를 사용하여 문자열을 UTF8로 인코딩하려고했습니다. 내가 사용하고

컬 옵션은 다음과 같습니다

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

내 브라우저와 공급의 텍스트를 잡아 내 상자에 파일로 저장 한 후 내 스크립트는 태그를 인식 할 수있는 경우.

cURL을 사용할 때 구문 분석 오류가 발생합니다.

제 질문은 - RSS를 구문 분석하려면 cURL과 함께 사용해야하는 설정은 무엇입니까?

+0

무슨 오류를받을 수 있나요? –

+0

file_get_contents는 HTTP를 무시하거나 투명하게 작동합니다. cURL은 그렇지 않습니다. 따라서 문제를 해결하는 가장 좋은 방법은 file_get_contents와 cURL 간의 차이점을 테스트하는 것입니다. 당신은 이미 무엇을 시도 했습니까? – jmkeyes

+0

호스트가 기본 PHP 기능을 사용하지 않으면 -move host. –

답변

2

원격 파일에 file_get_contents()를 사용하지 마십시오. 속도가 매우 느리고 CPU 사용량이 많지 않으며 curl과 같이 유연성이있는 것처럼 리디렉션, 캐싱, 쿠키 등을 처리하지 않습니다.

컬보다 더 좋음; 보다 빠르고 유연하며 CPU 여기에, 그것은 죽은 간단하게이 작업을 수행 할 수 있도록 많은 PHP 클래스가 ... fsocket을 사용하고 집중적 인 내 즐겨 찾기 중 하나입니다 적은 :

http://scripts.incutio.com/httpclient/

관련 문제