删除HTML标记+内容

时间:2014-02-25 01:03:29

标签: html ruby nokogiri

好的,听起来很简单,我仍然无法弄明白该怎么做(想象一下,我甚至决定改变语言)。

所以,我有简单的文字或包含一些标签的文字(注意:有些可能不被视为有效的 html标签,例如<ref> )我想删除所有标签及其内容。

与Nokogiri的.search("//text()").text一起尝试但距离我的需求还很远。

想法?


P.S。我正在寻找一种防弹,100%工作的解决方案,因此RegEx是不可能的......


SAMPLE INPUT / OUTPUT

One <!-- Two -->Three

应该返回One Three

This is <a href='#'>some Text</a>

应该返回This is

Even more <ref name='tag'>reference</ref><br>text

应该返回Even more text

2 个答案:

答案 0 :(得分:1)

Nokogiri似乎对手头的问题有点过分,我会使用正则表达式来解决它,如下所示

input = "One <!-- Two -->Three"
input.gsub(/(\<.+\>)/) 
#=> "One Three"

input = "This is <a href='#'>some Text</a>"
input.gsub(/(\<.+\>)/, "")
#=> "This is "

input = "Even more <ref name='tag'>reference</ref><br>text"
input.gsub(/(\<.+\>)/, "")
#=> "Even more text"

rubular上的演示

答案 1 :(得分:1)

如果您想使用Nokogiri执行此操作,则必须使用DocumentFragment类,因为该文本不是有效的HTML或XML文档。

doc = Nokogiri::HTML::DocumentFragment.parse(text)

puts doc.xpath("text()")

这为您提供了指定的输出。