删除 HTML 标记 + 内容



好吧,听起来很简单,我仍然不知道该怎么做(想象一下我什至决定为此更改语言)。

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

尝试了Nokogiri的.search("//text()").text,但它离我需要的还很远。

想法?


附言我正在寻找一种防弹的、100% 有效的解决方案,所以正则表达式是不可能的......


示例输入/输出

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.

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

doc = Nokogiri::HTML::DocumentFragment.parse(text)
puts doc.xpath("text()")

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

> 对于手头的问题来说,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"

卢布演示

相关内容

  • 没有找到相关文章

最新更新