1

我正在使用Zend_Feed_Atom从网站获取提要,但收到此错误:

信息:

DOMDocument 无法解析 XML:DOMDocument::loadXML() [domdocument.loadxml]:xmlParseEntityRef:实体中没有名称,行:827

我尝试了另一个站点,但没有错误。我想知道为什么我会在该特定页面上出现错误,以及这个错误是什么意思。我在网上看过,它说这是编码的问题(我不太明白)。

我的代码很简单,它只是

if($type_feed == "atom"){
    $nfeed = new Zend_Feed_Atom($address);  
}elseif($type_feed == "rss"){
    $nfeed= new Zend_Feed_RSS($address);
}

任何帮助都是极好的!谢谢!

4

2 回答 2

1

看看这里:http ://www.php.net/manual/en/class.domdocument.php#domdocument.props.recover

所有权。启用恢复模式,即尝试解析格式不正确的文档。此属性不是 DOM 规范的一部分,而是特定于 libxml。

你可以试试:

$dom = new DOMDocument();
$dom->recover = true;

另外,看看我的实现:https ://gitlab.com/DeepRSS/Reader/blob/a2723735ff3e3cdd7d85649c92d0115211ea9a0d/src/Core/Service/ZendReader/FeedParser.php#L99

于 2018-05-08T07:49:08.490 回答
0

如果饲料被破坏了,那么它就被破坏了,我们对此无能为力。

解决此问题的一种方法是使用@来抑制错误。

if($type_feed == "atom"){
    $nfeed = @new Zend_Feed_Atom($address);  
}elseif($type_feed == "rss"){
    $nfeed= @new Zend_Feed_RSS($address);
}

请注意,这并不理想,因为它会在new调用时抑制所有内容。

于 2012-08-09T08:23:14.640 回答