从过去两周起,我收到了关注php警告消息
警告:DOMDocument :: load():文档末尾的额外内容 在http://widget.stagram.com/rss/n/zee/,行:10英寸 /home//public_html/wp-content/themes//inc/social-instagram.php 在第22行
我试图在警告消息中解析此链接
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
当我浏览网页浏览器http://widget.stagram.com/rss/tag/zee/中的链接时,xml似乎没问题。
答案 0 :(得分:2)
您需要使用curl并添加选项CURLOPT_USERAGENT
。这就是它在浏览器上工作的原因,而不是简单的file_get_contents
或->load
。考虑这个例子:
$url = ('http://widget.stagram.com/rss/tag/zee/');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, 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');
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$data = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
echo '<pre>';
print_r($xml);
答案 1 :(得分:0)
我遇到了同样的问题,发现以下解决方案无需CURL即可运行:
libxml_set_streams_context(
stream_context_create(
array(
'http' => array(
'user_agent' => 'php'
)
)
)
);
$dom = new DOMDocument;
$dom->load($xml);
额外内容错误消失了,我推送的所有Feed都运行正常。
非常感谢Gordon用这个答案回答了另一个问题,导致我尝试解决这个问题。