Sanitize построен на вершине Nokogiri :
Поскольку Sanitize основан на полнофункциональном парсере HTML-кода Nokogiri, а не на куче хрупких регулярных выражений, он без проблем справляется с искаженным или злонамеренно сформированным HTML и всегда выводит действительный HTML или XHTML .
Акцент мой. Таким образом, ответ «нет», вы должны исправить свой сломанный HTML.
Nokogiri должен исправить HTML так, чтобы его можно было правильно интерпретировать и построить DOM, затем Sanitize модифицирует DOM, который создает Nokogiri, и, наконец, этот модифицированный DOM будет сериализован для получения HTML, который вы сохраните. .
Если вы отсканируете источник Sanitize, вы увидите, что все в итоге проходит через clean!
и что будет использоваться to_html
или to_xhtml
методы:
if @config[:output] == :xhtml
output_method = fragment.method(:to_xhtml)
output_method_params[:save_with] = Nokogiri::XML::Node::SaveOptions::AS_XHTML
elsif @config[:output] == :html
output_method = fragment.method(:to_html)
else
raise Error, "unsupported output format: #{@config[:output]}"
end
result = output_method.call(output_method_params)
Таким образом, вы получаете версию HTML от Nokogiri, а не просто ваш HTML с удаленными плохими частями.