gpt4 book ai didi

php - htmlpurifier,第三方源的过度净化

转载 作者:可可西里 更新时间:2023-10-31 23:50:31 25 4
gpt4 key购买 nike

更新 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。

然后我使用 http://htmlpurifier.org/在加载到 DOMDocument 之前净化 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

顺便说一句,它适用于来自另一个站点的数据,就像您所说的那样,为来自该域的所有页面保留标题。

相关链接

最佳答案

您不应该需要 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 强大得多。

关于php - htmlpurifier,第三方源的过度净化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com