2009-03-29 5 views
11

인터넷에서 이와 비슷한 질문을 보았습니다. 대답이 없었습니다.file_get_contents()를 사용하여 원격 XML 페이지로드하기

원격 XML 페이지의 원본을 문자열로 반환하고 싶습니다. 원격 XML 페이지,이 질문의 목적을 위해입니다 : 일반 웹 브라우저에서

http://www.test.com/foo.xml 

, 나는 페이지를 볼 수 있고, 소스는 XML 문서입니다. 그러나 file_get_contents('http://www.test.com/foo.xml')을 사용하면 해당 URL이있는 문자열을 반환합니다.

XML 구성 요소를 검색하려면 있습니까? file_get_contents를 사용하는지 여부는 상관하지 않으며 작동하지 않을 수도 있습니다.

+0

이 질문보기 http://stackoverflow.com/questions/692962/how-to-use-php-to-get-a-webpage-into-a-variable/ –

답변

14

서버가 작동하려면 allow_url_fopen을 서버에 설정해야합니다.

당신하지는 경우에, 당신은 대체이 기능을 사용할 수 있습니다

<?php 
function curl_get_file_contents($URL) 
    { 
     $c = curl_init(); 
     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_URL, $URL); 
     $contents = curl_exec($c); 
     curl_close($c); 

     if ($contents) return $contents; 
      else return FALSE; 
    } 
?> 

here에서 차용.

+0

대체품이 될지는 확실하지 않습니다. 이 함수는 PHP가 cURL이 활성화 된 상태로 컴파일되어야합니다. fopen-wrappers가 비활성화 된 경우 cURL 기능이 비활성화 될 수도 있습니다. 안전 측면에서 fsockopen() 함수를 사용하는 것이 더 좋습니다. –

+1

fopen-wrappers가 비활성화되어 있지만 cURL이 아닌 많은 호스팅에 들어 왔기 때문에 실제로는 대체가 아니지만 좋은 해결 방법이 될 수 있습니다. – Seb

+0

return 문에서 나는 다음과 같은 삼항 식을 선호한다 :'return ($ contents)? $ 내용 : 거짓; – Nolwennig

13

이상하게 보입니다. file_get_contents()는 XML뿐 아니라 다른 사이트에 대한 유효한 데이터를 반환합니까? URL은 the fopen-wrappers (기본값) 인 경우에만 filename 매개 변수로 사용할 수 있습니다.

나중에 검색된 XML을 처리 할 것입니다. 그러면 simplexml_load _file()을 사용하여 직접 SimpleXml에로드 할 수 있어야합니다.

try { 
    $xml = simplexml_load_file('http://www.test.com/foo.xml'); 
    print_r($xml); 
} ... 

XML 파일을 읽는 데 SimpleXML을 사용하는 것이 좋습니다. 사용하기가 매우 쉽습니다.