使用file_get_contents()加载远程xml页面

时间:2009-03-29 20:18:59

标签: php xml file-get-contents

我在互联网上看到过类似的问题,没有答案。

我想将远程XML页面的源代码返回到字符串中。出于此问题的目的,远程XML页面是:

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

在常规的Web浏览器中,我可以查看页面,源代码是XML文档。但是,当我使用file_get_contents('http://www.test.com/foo.xml')时,它会返回一个带有相应URL的字符串。

是否要检索XML组件?我不在乎它是否使用file_get_contents,只是可以使用的东西。

2 个答案:

答案 0 :(得分:15)

您需要在服务器中设置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

答案 1 :(得分:14)

这看起来很奇怪。 file_get_contents()是否返回其他站点的有效数据(不仅仅是XML)?如果已启用the fopen-wrappers(默认情况下为默认值),则URL只能用作文件名参数。

我猜你以后会处理检索到的XML - 然后你应该可以使用simplexml_load _file()直接将它加载到SimpleXml

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

我建议使用SimpleXML读取XML文件,它非常易于使用。