LoginSignup
1

More than 5 years have passed since last update.

Ruby で文字実体参照や数値文字参照をデコードする方法

Last updated at Posted at 2016-06-08

何を使って実装するのが妥当なのか。

Oga と htmlentities は String#gsub での置換で実装されている。
一方で Nokogiri はパースしてからテキストノードの値として取得する実装っぽい。

Oga を使っているなら Oga を使い、そうでないなら、htmlentities を入れて使うのが手頃だろうか。

CGI.unescape_html

文字参照は & > < " のみ対応。

CGI.unescape_html('©') # => "©"
CGI.unescape_html('&')  # => "&"
CGI.unescape_html('
')  # => "\n"

gem: htmlentities

HTMLEntities.new.decode('©') # => "©"
HTMLEntities.new.decode('&')  # => "&"
HTMLEntities.new.decode('
')  # => "\n"

gem: Nokogiri

Nokogiri::HTML.parse('©').text # => "©"
Nokogiri::HTML.parse('&').text  # => "&"
Nokogiri::HTML.parse('
').text  # => "\n"

gem: Oga

YorickPeterse/oga: Oga is an XML/HTML parser written in Ruby.

Oga::HTML::Entities.decode('©') # => "©"
Oga::HTML::Entities.decode('&')  # => "&"
Oga::HTML::Entities.decode('
')  # => "\n"

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1