我正在尝试加载此页面 https://developers.facebook.com/blog/feed 在我的网站没有运气。我正在使用此代码
<?php
$xml = simplexml_load_file('https://developers.facebook.com/blog/feed/');
print_r($xml);
?>
但是我得到了很多这样的错误
警告:simplexml_load_file()[function.simplexml-load-file]: https://developers.facebook.com/blog/feed/:10:解析器错误: xmlParseEntityRef:第2行的/fb_feed/fb_feed.php中没有名称
感谢所有帮助我的人
答案 0 :(得分:2)
我认为这是XML Feed本身的一个问题。
使用file_get_contents加载字符串,并在amperand上执行str_replace
&
所以离开你
$xml = simplexml_load_string(str_replace('&','&',file_get_contents('https://developers.facebook.com/blog/feed/')));
编辑:
刚刚在评论中看到,这已经解决过了,str_replace可以从原来的改进到
$xml = simplexml_load_string(str_replace(array("&", "&"), array("&", "&"),file_get_contents('https://developers.facebook.com/blog/feed/')));
这可以避免转换已经正确编码的&符号。
编辑2:
Facebook将来自file_get_contents的请求重定向到浏览器选择页面。因此,我们需要“欺骗”它,以为我们正在使用常规浏览器。
$url='https://developers.facebook.com/blog/feed/';
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($crl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$ret = curl_exec($crl);
curl_close($crl);
$xml = simplexml_load_string(str_replace(array("&", "&"),array("&", "&"),$ret));
var_dump($xml);
第一个答案应该适用于大多数情况,但编辑2适用于Facebook Dev博客,或任何其他基于用户代理标题重定向的答案。
答案 1 :(得分:0)
可能需要将网址编码为this page建议
simplexml_load_file(rawurlencode('https://developers.facebook.com/blog/feed/'))
如果不起作用,您可以尝试按file_get_contents
加载文件,并将返回值传递给xml解析器:
simplexml_load_string( file_get_contents('https://developers.facebook.com/blog/feed/') );
答案 2 :(得分:0)
<?php
$url = "https://developers.facebook.com/blog/feed/";
$xml = str_replace('&','&', file_get_contents($url));
$xml = simplexml_load_string($xml);
print_r($xml);
?>