Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails HTML清理_Ruby_Ruby On Rails 3_Nokogiri_Html Sanitizing - Fatal编程技术网

Ruby Rails HTML清理

Ruby Rails HTML清理,ruby,ruby-on-rails-3,nokogiri,html-sanitizing,Ruby,Ruby On Rails 3,Nokogiri,Html Sanitizing,我正在尝试清理一个HTML文件,但它无法正常工作。除了段落和换行标记外,我希望所有内容都是纯文本。这是我的清理代码(点表示我的类中与问题无关的其他代码): 它不能正常工作。函数从中读取其输入,以及。它将留在CSS标记、JavaScript和HTML注释标记的主体中。它可能是在其他东西,以及我没有注意到离开。请建议如何彻底删除除段落和换行标记以外的所有CSS、HTML和JavaScript 我认为你不想对它进行消毒。清理去除HTML,留下文本,除了您认为合适的HTML元素。它旨在允许用户输入字段包

我正在尝试清理一个HTML文件,但它无法正常工作。除了段落和换行标记外,我希望所有内容都是纯文本。这是我的清理代码(点表示我的类中与问题无关的其他代码):


它不能正常工作。函数从中读取其输入,以及。它将留在CSS标记、JavaScript和HTML注释标记的主体中。它可能是在其他东西,以及我没有注意到离开。请建议如何彻底删除除段落和换行标记以外的所有CSS、HTML和JavaScript

我认为你不想对它进行消毒。清理去除HTML,留下文本,除了您认为合适的HTML元素。它旨在允许用户输入字段包含一些标记

相反,您可能想要解析它。例如,下面将以给定的html字符串打印
标记的文本内容

doc = Nokogiri::HTML.parse(html)

doc.search('p').each do |el|
  puts el.text
end

您也可以使用CGI名称空间进行清理

require 'CGI'
str = "<html><head><title>Hello</title></head><body></body></html>"
p str
p CGI::escapeHTML str
需要“CGI”
str=“你好”
p str
p CGI::escapeHTML str
运行这个脚本,我们得到以下结果

$ ruby sanitize.rb
"<html><head><title>Hello</title></head><body></body></html>"
"&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;"
$ruby sanitize.rb
“你好”
“htmlheadtitleHello/title/headbody/body/html”

这看起来更像是解析而不是清理。哇,Scribd格式不方便处理。你能提供一个要点吗?
$ ruby sanitize.rb
"<html><head><title>Hello</title></head><body></body></html>"
"&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;"