Solución:
Una buena función que usa es6 para escapar de html:
const escapeHTML = str => str.replace(/[&<>'"]/g,
tag => ({
'&': '&',
'<': '<',
'>': '>',
"'": ''',
'"': '"'
}[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 > © <") // "Hello > © <"
decode("Hello > © © <") // "Hello > © © <"
Sin embargo, puede ver que este enfoque tiene un par de deficiencias:
- Codifica incluso caracteres seguros
H
→H
- 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
>
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 © bar ≠ baz 𝌆 qux'
he.decode('foo © bar ≠ baz 𝌆 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)