php – 我在使用simplexml解析facebook feed时遇到问题
发布时间:2020-12-13 21:59:59 所属栏目:PHP教程 来源:网络整理
导读:http://www.facebook.com/feeds/share_posts.php?id=207302593viewer=207302593key=d95b2de790format=rss20 上面的链接是我在Facebook上的共享帖子的URL.当我将该URL加载到simplexml_load_file()时,它提供了整页错误.看看错误,看起来Facebook正在吐出HTML而
http://www.facebook.com/feeds/share_posts.php?id=207302593&viewer=207302593&key=d95b2de790&format=rss20
上面的链接是我在Facebook上的共享帖子的URL.当我将该URL加载到simplexml_load_file()时,它提供了整页错误.看看错误,看起来Facebook正在吐出HTML而不是Feed.我认为这是一个身份验证问题,但我退出了Facebook并将Feed网址加载到我的浏览器中,我能够看到该Feed.这是我得到的错误.有任何想法吗?谢谢! A PHP Error was encountered Severity: Warning Message: simplexml_load_file() [function.simplexml-load-file]: http://www.facebook.com/feeds/share_posts.php?id=207302593&viewer=207302593&key=d95b2de790&format=rss20:12: parser error : AttValue: " or ' expected Filename: models/Stream.php Line Number: 55 A PHP Error was encountered Severity: Warning Message: simplexml_load_file() [function.simplexml-load-file]: </script><noscript> <meta http-equiv=refresh content="0; URL=?_fb_noscript=1" /> ... 解决方法
重新定义“喂”Facebook的方法.尝试一下,看看下载的页面
echo file_get_contents('http://www.facebook.com/feeds/share_posts.php?id=207302593&viewer=207302593&key=d95b2de790&format=rss20'); 看起来Facebook正在进行用户代理嗅探,拒绝任何“浏览器”(在这种情况下,PHP是浏览器)它认为不能处理其页面.他们在饲料上这样做有点奇怪,但扎克伯格以神秘的方式工作. (这样做是为了防止屏幕抓取是一回事,但是隐含地意味着提要由机器读取) 您需要将用户代理字符串设置为与Facebook支持的浏览器匹配.当我需要这样做时,我用户curl下载文件(curl有很多选项来设置http标头). 如果curl不是你的东西,你可以使用ini设置覆盖PHP的默认用户代理 ini_set('user_agent','Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |