我认为这是 XML 提要本身的问题。
见这篇文章。
使用 file_get_contents 加载字符串,并在 & 号上执行 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 博客,或任何其他基于用户代理标头重定向的内容。