RubyでHTMLの実体参照をエンコード/デコードする方法
タグ: ruby / 初版公開: 2014-03-09

RubyでHTMLの実体参照をエンコード/デコードするには、標準添付ライブラリcgiが利用できる。

CGI.escapeHTMLは、文字列中の&"<>を実体参照に置換してエンコードした文字列を返すメソッドだ。

require 'cgi'
string = CGI.escapeHTML('test "escaping" <characters>')
p string #=> "test &quot;escaping&quot; &lt;characters&gt;"

実体参照の文字列をデコードするにはCGI.unescapeHTMLメソッドを使用する。

require 'cgi'
string = CGI.unescapeHTML("test &quot;unescaping&quot; &lt;characters&gt;")
p string #=> "test \"unescaping\" <characters>"

なおRuby on Railsではcgiライブラリを使用しなくても良いよう、ヘルパーメソッドが用意されている。

hメソッドで実体参照にエンコードした文字列が得られる。

<%= h 'escaping <html>' %>

文字列のデコードにはrawメソッドを用いる。

<%= raw '&lt br &gt' %>

参考