更新2:http://htmlpurifier.org/phorum/read.php?3,5088,5113作者已经确定了问题。
更新:问题似乎是版本4.2.0独有的。我降级到4.1.0并且它有效。谢谢你的帮助。通知包裹的作者。
我正在抓一些页面,如:
http://form.horseracing.betfair.com/horse-racing/010108/Catterick_Bridge-GB-Cat/1215
根据W3C验证,它是有效的XHTML Strict。
然后我在加载到DOMDocument之前使用http://htmlpurifier.org/来纯化HTML。但是它只返回一行内容。
输出:
12:15 Catterick Bridge - Tuesday 1st January 2008 - Timeform | Betfair
代码:
echo $content; # all good
$purifier = new \HTMLPurifier();
$content = $purifier->purify($content);
echo $content; # all bad
顺便说一句,它适用于来自其他网站的数据,就像你说的那样从这个域中留下所有网页的标题。
相关链接
答案 0 :(得分:0)
您不应该需要HTML净化器。 DOMDocument类将为您处理所有事情。但是,它会触发无效html的警告,所以只需这样做:
$doc = new DOMDocument();
@$doc->loadHTML($content);
然后不会触发错误,您可以使用HTML执行所需的操作。
如果你正在抓链接,我建议你使用SimpleXMLElement :: xpath();这比使用DOMDocument容易得多。另一个例子:
$xml = new SimpleXMLElement($content);
$result = $xml->xpath('a/@href');
print_r($result);
您可以获得更复杂的xpath,允许您指定类名,ID和其他属性。这比DOMDocument强大得多。