Estoy tratando de decodificar algunas entidades HTML, como el '<'
devenir '<'
.
Tengo una gema antigua ( html_helpers ) pero parece que la abandoné dos veces.
¿Alguna recomendación? Necesitaré usarlo en un modelo.
Estoy tratando de decodificar algunas entidades HTML, como el '&lt;'
devenir '<'
.
Tengo una gema antigua ( html_helpers ) pero parece que la abandoné dos veces.
¿Alguna recomendación? Necesitaré usarlo en un modelo.
Respuestas:
HTMLEntities puede hacerlo:
fuente
HTMLEntities
gema se ocupa de casos comoå
y—
queCGI.unescapeHTML
no.Para codificar los caracteres, puede usar
CGI.escapeHTML
:Para decodificarlos, hay
CGI.unescapeHTML
:Por supuesto, antes de eso debes incluir la biblioteca CGI:
Y si estás en Rails, no necesitas usar CGI para codificar la cadena. Ahí está el
h
método.fuente
Creo que la gema Nokogiri también es una buena opción. Es muy estable y tiene una gran comunidad contribuyente.
Muestras:
o
fuente
CGI.escapeHTML
tal vez no pueda resolver algunos casos. Por otro lado, si necesita un conjunto completo de soporte, estoy seguro de queNokogiri
es una buena opción.CGI::escapeHTML
no se escapa de los caracteres alemanes como äöüß, y tal vez más ... Con Nokogiri aún no lo comprobé, pero esto sería un punto a favor.Para decodificar caracteres en Rails use:
Entonces,
saldría
fuente
#raw
No decodifica nada. Le dice a la vista que no codifique la cadena. Lo hace envolviendo la cadena en aActiveSupport::SafeBuffer
, que a su vez tiene una bandera (html_safe?
), establecida en verdadero. La vista usa este indicador para determinar que la cadena se puede inyectar directamente en el HTML sin escapar. Me gusta pensarhtml_safe
que el programador indica que la cadena en cuestión ya se ha escapado correctamente.Si no desea agregar una nueva dependencia solo para hacer esto (como
HTMLEntities
) y ya lo está utilizandoHpricot
, puede escapar y no escapar por usted. Maneja mucho más queCGI
:fuente
Puedes usar
htmlascii
gema:fuente
fuente