在损坏的html页面上使用DomDocument获取id元素


Get element by id using DomDocument on html page that is broken

我试图从这个页面中只提取一个具有id=MainText的div元素。然而,当我把这个页面的内容加载到DOM对象中时,我会得到几个错误:

标记g:plusone无效。。。意外的结束标记。。。htmlParseEntityRef:没有名称。。。htmlParseEntityRef:应为";"。。。

所以,我在想,如果可以忽略文档中的所有其他内容,直接转到我想要的部分,只获取具有特定id的div元素。

或者,除了使用domdocument类来实现相同的功能之外,还有其他选择吗?我不太擅长写正则表达式。

w3c验证器在快速运行时会抛出很多错误。尝试以这种方式清理html,然后将其馈送到DomDocument:

#Assuming that $html is your html source (retrieve it as you prefer)
$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();
$document = new DOMDocument();
$document->loadHTML((string)$tidy);

永远不要将RegEx与HTML一起使用。

坚持使用DOMDocument,如果它们不会引起进一步的问题,可能会抑制错误。