我正在从Web表单中收集一些HTML格式的内容。在保存此 HTML 内容之前,我想对其进行快速的健全性检查,以确保它看起来格式正确(没有未关闭的标签,没有无效的标记(。
使用 Ruby 和/或任何流行的 gem,我可以检查 HTML 片段字符串,例如:
<p>foo</p><h1>Unclosed H1<p>bar</p>
并发现诸如未关闭的h1
标签之类的东西?
以为Nokogiri会在这里救我,但没有:
>> Nokogiri::HTML::DocumentFragment.parse("<p>foo</p><h1>Unclosed H1<p>bar</p>").errors
=> []
你试过w3c_validators
吗?
[1] pry(main)> require 'w3c_validators'
=> true
[2] pry(main)> include W3CValidators
=> Object
[3] pry(main)> p MarkupValidator.new.validate_text('<!DOCTYPE html><html><body><p>foo</p><h1>Unclosed H1<p>bar</p></body></html>');
这为您提供了非常详细的验证结果。
或者,如果您只想检查结束标签,也许Nokogiri::XML::Document.parse().errors
,但除非文档类型是 XHTML,否则这可能不起作用,因为其他文档类型中的一些 HTML 元素甚至不需要结束标记。 w3c_validators
做得更好