'<'
が'<'
になるなど、いくつかのHTMLエンティティをデコードしようとしています。
古いgem( html_helpers )がありますが、2回放棄されたようです。
推奨事項はありますか?モデルで使用する必要があります。
HTMLEntities できること:
: jmglov@laurana; Sudo gem install htmlentities
Successfully installed htmlentities-4.2.4
: jmglov@laurana; irb
irb(main):001:0> require 'htmlentities'
=> []
irb(main):002:0> HTMLEntities.new.decode "¡I'm highly annoyed with character references!"
=> "¡I'm highly annoyed with character references!"
文字をエンコードするには、CGI.escapeHTML
を使用できます。
string = CGI.escapeHTML('test "escaping" <characters>')
それらをデコードするには、CGI.unescapeHTML
があります:
CGI.unescapeHTML("test "unescaping" <characters>")
もちろん、その前にCGIライブラリを含める必要があります。
require 'cgi'
Railsを使用している場合、CGIを使用して文字列をエンコードする必要はありません。 h
メソッドがあります。
<%= h 'escaping <html>' %>
Nokogiri gem も良い選択だと思います。非常に安定しており、巨大な貢献コミュニティがあります。
サンプル:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
または
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
Railsの文字をデコードするには、次を使用します。
<%= raw '<html>' %>
そう、
<%= raw '<br>' %>
出力します
<br>
これを行うためだけに新しい依存関係を追加したくない場合(HTMLEntities
など)、既にHpricot
を使用している場合、エスケープとエスケープ解除の両方が可能です。 CGI
をはるかに超えて処理します。
Hpricot.uxs "foo bär"
=> "foo bär"
htmlascii
gemを使用できます。
Htmlascii.convert string