我正在尝试清理HTML文件但它无法正常工作。除了段落和换行标记之外,我想要完全是纯文本。这是我的清理代码(点表示我班级中与问题无关的其他代码):
.
.
.
include ActionView::Helpers::SanitizeHelper
.
.
.
def remove_html(html_content)
sanitized_content_1 = sanitize(html_content, :tags => %w(p br))
sanitized_content_2 = Nokogiri::HTML(sanitized_content_1)
sanitized_content_2.css("style","script").remove
return sanitized_content_2
end
它无法正常工作。函数正在读取其输入的Here is the original HTML file和here is the "sanitized" code it is returning。它留在CSS标签,JavaScript和HTML评论标签的正文中。它可能会留在其他东西,我没有注意到。请告知如何彻底删除除段落和换行符之外的所有CSS,HTML和JavaScript?
答案 0 :(得分:0)
我认为你不想消毒它。清理条带HTML,留下文本,除了您认为正确的HTML元素。它旨在允许用户输入字段包含一些标记。
相反,您可能想要解析它。例如,以下内容将在给定的html字符串中打印<p>
标记的文本内容。
doc = Nokogiri::HTML.parse(html)
doc.search('p').each do |el|
puts el.text
end
答案 1 :(得分:0)
您也可以使用CGI名称空间进行清理。
require 'CGI'
str = "<html><head><title>Hello</title></head><body></body></html>"
p str
p CGI::escapeHTML str
运行此脚本,我们得到以下结果。
$ ruby sanitize.rb
"<html><head><title>Hello</title></head><body></body></html>"
"<html><head><title>Hello</title></head><body></body></html>"