Saltar al contenido

¿Forma nativa de JavaScript o ES6 para codificar y decodificar entidades HTML?

Solución:

Una buena función que usa es6 para escapar de html:

const escapeHTML = str => str.replace(/[&<>'"]/g, 
  tag => ({
      '&': '&amp;',
      '<': '&lt;',
      '>': '&gt;',
      "'": '&#39;',
      '"': '&quot;'
    }[tag]));

No hay una función nativa en la API de JavaScript que convierta los caracteres ASCII a su equivalente en “entidades html”. Aquí está el comienzo de una solución y un truco fácil que le puede gustar

Ruede su propio (advertencia: use HE en su lugar para la mayoría de los casos de uso)

Para JS puro sin una biblioteca, puede codificar y decodificar entidades HTML usando Javascript puro como este:

let encode = str => {
  let buf = [];

  for (var i = str.length - 1; i >= 0; i--) {
    buf.unshift(['&#', str[i].charCodeAt(), ';'].join(''));
  }

  return buf.join('');
}

let decode = str => {
  return str.replace(/&#(d+);/g, function(match, dec) {
    return String.fromCharCode(dec);
  });
}

Usos:

encode("Hello > © <") // "&#72;&#101;&#108;&#108;&#111;&#32;&#62;&#32;&#169;&#32;&#60;"
decode("Hello &gt; &copy; &#169; &lt;") // "Hello &gt; &copy; © &lt;"

Sin embargo, puede ver que este enfoque tiene un par de deficiencias:

  • Codifica incluso caracteres seguros H&#72;
  • Puede decodificar códigos numéricos (no en el plano astral), pero no sabe nada sobre la lista completa de entidades html / códigos de caracteres con nombre admitidos por navegadores como &gt;

Utilice la biblioteca HE (entidades HTML)

  • Apoyo para todas las referencias de caracteres con nombre estandarizadas
  • Apoyo para Unicode
  • Funciona con símbolos de unión ambiguos
  • Escrito por Mathias Bynens

Uso:

he.encode('foo © bar ≠ baz  qux'); 
// Output : 'foo &#xA9; bar &#x2260; baz &#x1D306; qux'

he.decode('foo &copy; bar &ne; baz &#x1D306; qux');
// Output : 'foo © bar ≠ baz  qux'

preguntas relacionadas

  • Cómo convertir caracteres a entidades HTML usando JavaScript simple
  • Codificar entidades html en javascript
  • ¿Entidades HTML de Unescape en Javascript?
  • Decodificación de entidad HTML
  • ¿Cuál es la forma correcta de decodificar una cadena que tiene entidades HTML especiales?
  • Quitar HTML de JavaScript de texto
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *