Загрузка удаленной XML-страницы с помощью file_get_contents () - PullRequest
12 голосов
/ 30 марта 2009

Я видел несколько вопросов, подобных этому, в Интернете, но ни одного ответа не было.

Я хочу вернуть источник удаленной XML-страницы в строку. Удаленная страница XML для целей этого вопроса:

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

В обычном веб-браузере я могу просматривать страницу, а источником является документ XML. Однако, когда я использую file_get_contents('http://www.test.com/foo.xml'), он возвращает строку с соответствующим URL.

Есть ли для получения компонента XML? Мне все равно, использует ли он file_get_contents или нет, просто то, что будет работать.

Ответы [ 2 ]

15 голосов
/ 30 марта 2009

Вам нужно установить 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;
    }
?>

Заимствовано у здесь .

14 голосов
/ 30 марта 2009

Это кажется странным. Возвращает ли file_get_contents () какие-либо действительные данные для других сайтов (не только XML)? URL-адрес может использоваться в качестве параметра имени файла только в том случае, если функция fopen-wrappers включена (которой они являются по умолчанию).

Я предполагаю, что вы собираетесь обработать полученный XML позже - тогда вы сможете загрузить его в SimpleXml напрямую, используя simplexml_load _file ().

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

Я рекомендую использовать SimpleXML для чтения XML-файлов, он очень прост в использовании.

...