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

Lo más fresco

  1. LPAD en SQL Server Nuevo
  2. Eliminar todos los objetos en SQL Server Modificado
  3. Dominio principal Nuevo
  4. Eliminar formato en Excel Nuevo

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Campo autonumérico
  3. Fecha y hora
  4. Cookies
  5. Convertir IP entre cadena y número

Entidades HTML

A la hora de mostrar texto plano en una página web debemos tener la precaución de reemplazar algunos caracteres con significado especial (como < o >) por sus correspondientes entidades HTML (en el ejemplo, &lt; y &gt;), de forma que el navegador los muestre tal cual (en lugar de intentar interpretarlos).

Versión «función»

/*
 * Inserta entidades HTML para mostar un texto como HTML
 */

function txt2html(texto){ // v2005-09-18
    var salida=texto;

    salida=salida.replace(/&/g, '&amp;');
    salida=salida.replace(/"/g, '&quot;');
    salida=salida.replace(/'/g, '&#039;');
    salida=salida.replace(/</g, '&lt;');
    salida=salida.replace(/>/g, '&gt;');

    return salida;
}


/*
 * Reemplaza algunas entidades HTML por el carácter que representan
 */

function html2txt(html){ // v2005-09-18
    var salida=html;

    salida=salida.replace(/&gt;/g,   '>');
    salida=salida.replace(/&lt;/g,   '<');
    salida=salida.replace(/&#039;/g, "'");
    salida=salida.replace(/&quot;/g, '"');
    salida=salida.replace(/&amp;/g'&');

    return salida;
}

Versión «método del objeto String»

/*
 * Inserta entidades HTML para mostar un texto como HTML
 */

String.prototype.encodeHTML=function(){ // v2005-09-18
    var salida=this;

    salida=salida.replace(/&/g, '&amp;');
    salida=salida.replace(/"/g, '&quot;');
    salida=salida.replace(/'/g, '&#039;');
    salida=salida.replace(/</g, '&lt;');
    salida=salida.replace(/>/g, '&gt;');

    return salida;
}


/*
 * Reemplaza algunas entidades HTML por el carácter que representan
 */

String.prototype.decodeHTML=function(){ // v2005-09-18
    var salida=this;

    salida=salida.replace(/&gt;/g,   '>');
    salida=salida.replace(/&lt;/g,   '<');
    salida=salida.replace(/&#039;/g, "'");
    salida=salida.replace(/&quot;/g, '"');
    salida=salida.replace(/&amp;/g'&');

    return salida;
}

Ejemplo de uso

var foo='<b>Hola, mundo</b>';
document.write('<p>' + txt2html(foo) + '</p>');
document.write('<p>' + foo.encodeHTML() + '</p>');

var foo='&lt;b&gt;Hola, mundo&lt;/b&gt;';
document.write('<p>' + html2txt(foo) + '</p>');
document.write('<p>' + foo.decodeHTML() + '</p>');

El chascarrillo

Un error muy típico es generar dinámica y alegremente un campo de formulario con lo que sea que tengamos en una variable, lo que puede conducir a un HTML como <input type="text" name"autor" value="Leopoldo "Alas" Clarín"> que tendrá al pobre usuario preguntándose por qué sólo aparece Leopoldo en la casilla. Lo correcto sería <input type="text" name"autor" value="Leopoldo &quot;Alas&quot; Clarín">.

Y no, no se confundan ustedes, el visitante de la página no tiene que andar reemplazando cada comilla por &quot;. Sólo debe hacerse cuando el HTML de la página se genere con JavaScript.

Historial

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 miércoles 10 de marzo de 2010 (22:18:42 +0100) 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-2010 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com