J'essaie de décoder certaines entités HTML, telles que '<'
devenir '<'
.
J'ai un vieux bijou ( html_helpers ) mais il semble avoir été abandonné deux fois.
Des recommandations? J'aurai besoin de l'utiliser dans un modèle.
HTMLEntities peut le faire:
: 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!"
Pour encoder les caractères, vous pouvez utiliser CGI.escapeHTML
:
string = CGI.escapeHTML('test "escaping" <characters>')
Pour les décoder, il y a CGI.unescapeHTML
:
CGI.unescapeHTML("test "unescaping" <characters>")
Bien entendu, avant cela, vous devez inclure la bibliothèque CGI:
require 'cgi'
Et si vous êtes dans Rails, vous n'avez pas besoin d'utiliser CGI pour encoder la chaîne. Il y a la méthode h
.
<%= h 'escaping <html>' %>
Je pense que Nokogiri gem est également un bon choix. Il est très stable et a une énorme communauté contributive.
Échantillons:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
ou
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
Pour décoder les caractères dans Rails, utilisez:
<%= raw '<html>' %>
Alors,
<%= raw '<br>' %>
serait sortie
<br>
Si vous ne voulez pas ajouter une nouvelle dépendance simplement pour faire ceci (comme HTMLEntities
) et que vous utilisez déjà Hpricot
, elle peut à la fois s'échapper et vous échapper. Il gère beaucoup plus que CGI
:
Hpricot.uxs "foo bär"
=> "foo bär"
Vous pouvez utiliser htmlascii
gem:
Htmlascii.convert string