12

我在网上看到一些类似的问题,没有答案。

我想将远程 XML 页面的源返回到字符串中。就本问题而言,远程 XML 页面是:

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

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

是否有检索 XML 组件?我不在乎它是否使用 file_get_contents,只要它会起作用。

4

2 回答 2

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;
    }
?>

从这里借来的。

于 2009-03-29T20:33:58.177 回答
14

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

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

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

我推荐使用 SimpleXML 来读取 XML 文件,它非常容易使用。

于 2009-03-29T20:33:45.820 回答