让我说我有:
@string = "it is a <a href="#">string</a>"
我想以两种方式在我的应用程序的不同部分使用它:
第一个可以使用html_safe
:
@string.html_safe
这是string
如何实现第二个?
这是一个字符串。
答案 0 :(得分:40)
答案 1 :(得分:8)
你可以试试这个:
strip_tags(@string)
答案 2 :(得分:2)
您可以使用nokogiri
执行相同的操作。
这个SO post讲述了这个故事。
简而言之:
这使用XPath的starts-with
函数:
你必须先这样定义:
require 'nokogiri'
item = Nokogiri::HTML('<a href="#">string</a>')
puts item.to_html
以上将给出html输出。然后你可以使用XPath。
item.search('//a[not(starts-with(@href, "http://"))]').each do |a|
a.replace(a.content)
end
puts item.to_html
答案 3 :(得分:2)
用于一般用途(例如网络刮刀):
puts Rails::Html::FullSanitizer.new.sanitize("<div>Hello</div><br>")
# Hello
答案 4 :(得分:1)
在Rails中,另请参阅strip_tags方法。 http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
答案 5 :(得分:0)
Rails提供了一个名为strip_links
的方法,它似乎可以做你想要的(查看它的名字)。
根据its APIDock page,它有点受限。要使它适用于/ any字符串,您可以扩展字符串类:
class String
def strip_links
ActionController::Base.helpers.strip_links(self)
end
end
所以你可以使用:
@string.strip_links