我尝试过使用HTML来清理一个包含网站Sanitize
的字符串。
它只删除了<script>
标记,而没有删除脚本标记内的JavaScript。
我可以使用什么来从页面中删除JavaScript?
发布于 2011-11-29 01:06:39
require 'open-uri' # included with Ruby; only needed to load HTML from a URL
require 'nokogiri' # gem install nokogiri read more at http://nokogiri.org
html = open('http://stackoverflow.com') # Get the HTML source string
doc = Nokogiri.HTML(html) # Parse the document
doc.css('script').remove # Remove <script>…</script>
puts doc # Source w/o script blocks
doc.xpath("//@*[starts-with(name(),'on')]").remove # Remove on____ attributes
puts doc # Source w/o any JavaScript
发布于 2011-11-28 13:37:37
我偏爱Loofah的宝石。根据文档中的示例进行了修改:
1.9.3p0 :005 > Loofah.fragment("<span onclick='foo'>hello</span> <script>alert('OHAI')</script>").scrub!(:prune).to_s
=> "<span>hello</span> "
您可能会对ActiveRecord extensions提供的丝瓜感兴趣。
发布于 2011-11-29 05:30:05
事实证明,Sanitize
有一个内置的选项(只是没有很好的文档)……
Sanitize.clean(content, :remove_contents => ['script', 'style'])
这删除了我想要的所有脚本和样式标签(以及它们的内容)。
https://stackoverflow.com/questions/8291789
复制相似问题