borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
Compartir esta página

Entidades HTML

JavaScript, el languaje nacido para manipular HTML, no tiene ningún método nativo para escapar texto en el contexto de HTML (dejando aparte la ingeniosa filigrana de invocar al DOM, inyectar el texto en un elemento fastasma y leerlo de vuelta). Así que siempre viene bien esta pareja de funciones que lo hacen sin florituras y funcionan en entornos sin DOM como Node.js.

Versión «función»

/** * Inserta las entidades HTML básicas para inyectar texto en HTML * * @param {String} texto Texto plano * @returns {String} HTML * * @version 2014-02-17 */ function txt2html(texto){     return String(texto)         .replace(/&/g, "&amp;")         .replace(/"/g, "&quot;")         .replace(/"/g, "&#039;")         .replace(/</g, "&lt;")         .replace(/>/g, "&gt;"); } /** * Reemplaza las entidades HTML básicas por el carácter que representan * * @param {String} html Texto en HTML * @returns {String} Texto plano * * @version v2014-02-17 */ function html2txt(html){     return String(html)         .replace(/&gt;/g, ">")         .replace(/&lt;/g, "<")         .replace(/&#039;/g, "'")         .replace(/&quot;/g, '"')         .replace(/&amp;/g, "&"); }

Versión «método del objeto String»

Nota: como ya sabemos todos, cada vez que extendemos el prototipo de los objetos nativos Dios mata un gatito.

/** * Inserta las entidades HTML básicas para inyectar texto en HTML * * @returns {String} HTML * * @version 2014-02-17 */ String.prototype.encodeHTML = function(){     return this         .replace(/&/g, "&amp;")         .replace(/"/g, "&quot;")         .replace(/"/g, "&#039;")         .replace(/</g, "&lt;")         .replace(/>/g, "&gt;"); } /** * Reemplaza las entidades HTML básicas por el carácter que representan * * @returns {String} Texto plano * * @version v2014-02-17 */ String.prototype.decodeHTML = function(){     return this         .replace(/&gt;/g, ">")         .replace(/&lt;/g, "<")         .replace(/&#039;/g, "'")         .replace(/&quot;/g, '"')         .replace(/&amp;/g, "&"); }

Historial

2014-02-17
Simplificar el código (¿quién necesita tantas variables?).
Documentación en formato jsdoc.
v2005-09-18
Añadimos a las funciones la palabra clave var para convertir las variables en locales (señor, qué despiste).
Primera versión de los métodos.
v2005-08-30
Primera versión de las funciones.

Esta página ha sido impresa el sábado 23 de septiembre de 2017 (02:22:15 +0200) desde http://borrame.com/recortes/javascript/entidades-html.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2017 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com