私が持っているとしましょう:
@string = "it is a <a href="#">string</a>"
アプリケーションのさまざまな部分で2つの方法で使用したい:
最初のものはhtml_safe
を使用して実行できます:
@string.html_safe
どうすれば2番目のものを達成できますか?
紐です。
これを試すことができます:
strip_tags(@string)
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
汎用用途(例:Webスクレーパー):
puts Rails::Html::FullSanitizer.new.sanitize("<div>Hello</div><br>")
# Hello
Railsでは、strip_tagsメソッドも参照してください。 http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Railsは strip_links
、それはあなたがしたいことをしているようです(その名前を見てください)。
そのAPIDockページ によると、それは少し制限されています。これを任意の文字列に適用するには、文字列クラスを拡張します。
class String
def strip_links
ActionController::Base.helpers.strip_links(self)
end
end
だからあなたは使うことができます:
@string.strip_links