Загрузка удаленной xml-страницы с помощью file_get_contents()

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

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

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

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

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

Ответ 1

Для этого вам нужно иметь 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;
    }
?>

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

Ответ 2

Это кажется странным. Ли 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 файлов, он очень прост в использовании.