我已经在 Ruby 中看到了基于白名单的 HTML sanitizer ,但我需要相反的方法,我只需要从页面中删除链接以准备好进行 PDF 转换。我尝试了 Sanitize,但它不符合我的需要,因为很难猜测将在获取的页面上使用哪些 HTML 元素,因此我无法将它们添加到列表中。
如果我的输入是
<a href="link">Link!</a>
<b>Bold Text</b>
<div>A div!</div>
我愿意
Link!
<b>Bold Text</b>
<div>A div!</div>
作为输出。
是否有针对 Ruby 的“基于黑名单的 sanitizer ”?
最佳答案
Tin Man 答案的细微变化,仍然使用 Nokogiri :
require 'nokogiri' # gem install nokogiri
doc = Nokogiri.HTML( my_html )
doc.css('a,blink,marquee').each do |el|
el.replace( el.inner_html )
end
cleaned = doc.to_html
这里的两个区别是:
使用
css
而不是search
可以稍微更具体地了解正在使用的选择器(虽然它没有提供任何功能差异),但更重要的是通过替换为
inner_html
,我们保留了链接内可能的标记。例如,给定标记:<p><a href="foo">Hi <b>Mom</b></a>!</p>
然后替换为
.content
会产生:<p>Hi Mom!</p>
而替换为
.inner_html
会产生:<p>Hi <b>Mom</b>!</p>
关于html - 在 Ruby 中删除特定的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319407/