script - sections in html
¿Cómo codifico/decodizo entidades HTML en Ruby? (7)
Creo que la gema Nokogiri también es una buena opción. Es muy estable y tiene una gran comunidad contribuyente.
Muestras:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
o
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I''m highly annoyed with character references!"
Estoy intentando decodificar algunas entidades HTML, como ''<''
convirtiéndose en ''<''
.
Tengo una gema antigua ( html_helpers ) pero parece haber sido abandonada dos veces.
¿Alguna recomendación? Tendré que usarlo en un modelo.
Para codificar los personajes, puedes usar CGI.escapeHTML
:
string = CGI.escapeHTML(''test "escaping" <characters>'')
Para decodificarlos, existe CGI.unescapeHTML
:
CGI.unescapeHTML("test "unescaping" <characters>")
Por supuesto, antes de eso, debe incluir la biblioteca CGI:
require ''cgi''
Y si estás en Rails, no necesitas usar CGI para codificar la cadena. Ahí está el método h
.
<%= h ''escaping <html>'' %>
Para decodificar personajes en Rails usa:
<%= raw ''<html>'' %>
Asi que,
<%= raw ''<br>'' %>
saldría
<br>
Puedes usar la gema htmlascii
:
Htmlascii.convert string
Si no desea agregar una nueva dependencia solo para hacer esto (como HTMLEntities
) y ya está usando Hpricot
, puede escaparse y escaparse por usted. Maneja mucho más que CGI
:
Hpricot.uxs "foo bär"
=> "foo bär"
HTMLEntities puede hacerlo:
: 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!"
<% str="<h1> Test </h1>" %>
result: < h1 > Test < /h1 >
<%= CGI.unescapeHTML(str).html_safe %>