web-dev-qa-db-ja.com

通常のRubyコード(Rails以外)でstrip_tagsを使用するにはどうすればよいですか?

HTMLをプレーンテキストに変換する必要があります。 ActionViewのSanitizeHelperにはそれを行うNice関数がありますが、それを参照して単純なtest.rbファイルで使用する方法を理解するのに苦労しています。

http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

strip_tags("<b>lol</b>") => "lol"を呼び出せるようにしたいと思います

24
sanitizeme

質問はかなり古いですが、私は最近同じ問題を抱えていました。私は簡単な解決策を見つけました:gem sanitize 。軽量で問題なく動作し、必要に応じて追加のオプションがあります。

Sanitize.clean("<b>lol</b>") #=> "lol"
31
santuxus

ActiveSupportは、個々のコンポーネントのチェリーピッキングをサポートする唯一のRailsフレームワークです。ActionViewを含む他のフレームワークは、まとめて必要です。

require 'action_view'

このrequireは、必ずしもすべてのActionViewをロードするとは限らないことに注意してください。スレッドセーフで自動ロードが熱心に行われる必要がある状況を除けば、自動ロードを設定するだけで、共通の依存関係が必要になります。つまり、requireに従うと、参照する場合、たとえばActionView::Helpers::SanitizeHelperの場合、action_view/helpers /sanitize_helper.rbが必要になります。

したがって、ActionViewを使用して目的を達成するための、サポートされている正しい方法は次のとおりです。

require 'action_view'

class Test < Test::Unit::TestCase # or whatever
  include ActionView::Helpers::SanitizeHelper

  def my_test
    assert_equal "lol", strip_tags("<b>lol</b>")
  end
end

これは十分に文書化されていません。私はこの回答を主に この問題に関する議論 に基づいています。

25
John

これで十分だと思います。

"<b>lol</b>".gsub(/<[^>]*>/ui,'') #=> lol

Nokogiriも使用できます。

require 'rubygems'
require 'nokogiri'
doc = Nokogiri::HTML("<b>lol</b>")
doc.text #=> "lol"

次のような操作を行うことで、Rails 1を使用できます。

require 'rubygems'
require 'action_view'

class Foo
  include ActionView::Helpers::SanitizeHelper

  def test
    strip_tags("<b>lol</b>")
  end
end

f = Foo.new
puts f.test #=> lol
16
khelll

あまり頻繁に使用しない場合は、次を使用できます。

ActionView::Base.full_sanitizer.sanitize(your_html_string)

それ以外の場合は、次のようにtest_helper.rbファイルでメソッドを定義できます。

def strip_html_tags(string)
    ActionView::Base.full_sanitizer.sanitize(string)
end

次に、test.rbファイルで次のように使用します。

strip_html_tags(your_html_string)
13
Malik Shahzad

質問はかなり古いですが、次のようにtest.rbで呼び出すことができます。

ActionController::Base.helpers.strip_tags("<b>lol</b>") => "lol"
5
Aleks

この例では:

"&lt;p&gt;<i>example</i>&lt;/p&gt;"

これは私を助けました:

ActionView::Base.full_sanitizer.sanitize(Nokogiri::HTML(example).text)

出力:

example
0
shilovk