如何在PHP中处理无效的HTML?

时间:2012-07-18 17:19:39

标签: php html regex parsing

I've seen this question ,非常好,内容丰富。但是,它没有涉及相当常见的情况。

假设我需要废弃大量网站(甚至是同一个域中的网页),但该网站的作者对他的代码不够关心,并且有一些严重错误的代码“有点工作”。我需要从该网站获取信息。

在这种情况下我该怎么办?理想情况下没有去̡͢͞͞͞͡s̶̢̛á̵̢̢̕͘̕͘͢҉̵͢҉。

有可能吗?我是否必须恢复到RegExp?

3 个答案:

答案 0 :(得分:4)

您需要一个DOM解析器。 Php has one。然后是are some alternatives(还有更多...只是为他们谷歌)。如果你愿意,你甚至可以运行“乱码HTML”trhu HTML Purifier

答案 1 :(得分:0)

我不知道您是如何抓取该网站的,但使用RegExp将允许您为废品代码添加许多条件。这可能需要一些时间,具体取决于足迹的数量和您的RegExp技能。

您也可以在网站HTML上使用Tidy,但这也会导致IMO产生奇怪的结果。

答案 2 :(得分:0)

它必须是PHP吗? Python有一个很棒的库,名为 Beautiful Soup “你没有写那个糟糕的页面。你只是想从中获取一些数据”) 。根据我的经验,我会推荐它,以至于我会说如果你有选择,可以编写一个快速的Python脚本来将你的节点解析成一个PHP可以提取的干净文件。

(知道PHP在标题中并且这并没有直接回答你的问题。如果你没有选择(或不喜欢)Python,请道歉,只是想提出一个很好的选择。)