RubyでHTMLの実体参照をエンコード/デコードするには、標準添付ライブラリcgi
が利用できる。
CGI.escapeHTML
は、文字列中の&"<>を実体参照に置換してエンコードした文字列を返すメソッドだ。
require 'cgi'
string = CGI.escapeHTML('test "escaping" <characters>')
p string #=> "test "escaping" <characters>"
実体参照の文字列をデコードするにはCGI.unescapeHTML
メソッドを使用する。
require 'cgi'
string = CGI.unescapeHTML("test "unescaping" <characters>")
p string #=> "test \"unescaping\" <characters>"
なおRuby on Railsではcgi
ライブラリを使用しなくても良いよう、ヘルパーメソッドが用意されている。
h
メソッドで実体参照にエンコードした文字列が得られる。
<%= h 'escaping <html>' %>
文字列のデコードにはraw
メソッドを用いる。
<%= raw '< br >' %>
参考