Convierte caracteres especiales en entidades HTML y viceversa.
Los resultados tienen carácter informativo. Contrástalos con otras fuentes.
Escapa el ampersand el último y corromperás todas las entidades que acabas de escribir
El escapado HTML tiene cinco caracteres y una regla sobre el orden. El ampersand debe ir primero, porque cada sustitución posterior introduce nuevos ampersands. Escápalo el último y < se convierte en &lt;: la página muestra el texto de la entidad en lugar del carácter, y el fallo parece una plantilla estropeada y no un error de secuencia.
Cómo funciona
- Convierte los caracteres con significado en HTML a sus formas de entidad, y al revés.
- Aplica las sustituciones en el orden que evita el doble escapado.
- Cubre las cinco entidades predefinidas más las referencias numéricas para todo lo demás.
& → & DEBE sustituirse primero < → < > → > " → " ' → ' todo lo demás: &#DECIMAL; o &#xHEX;
Ejemplo resuelto
La cadena <b>a & b</b> escapada correctamente y luego con el ampersand tratado el último.
- orden correcto → <b>a & b</b>
- ampersand el último → &lt;b&gt;a & b&lt;/b&gt;
- cada entidad de los pasos anteriores se escapó otra vez
- el navegador muestra después el texto literal <b> en la página
Una sola línea reordenada convierte una salida que funcionaba en códigos de entidad visibles. Las cinco sustituciones son triviales por separado; lo único que puede fallar es hacerlas en la secuencia equivocada.
Cómo leer el resultado
- El escapado depende del contexto y esto cubre uno. Un valor seguro en el texto de un elemento no lo es automáticamente en un atributo, una URL, dentro de un bloque de script o en CSS: cada sitio necesita su propio escapado aplicado donde se usa.
- ' está definido en XML pero no lo estaba en HTML 4, y por eso ' es la forma numérica más segura para la comilla simple en salida HTML que pueda llegar a analizadores antiguos.
- Los valores de atributo necesitan específicamente escapar las comillas. Una comilla doble sin escapar dentro de un atributo entrecomillado cierra el atributo antes de tiempo, que es el mecanismo detrás de buena parte de la inyección a través de plantillas.
- Escapar no es sanear. Vuelve inerte el marcado mostrándolo como texto; no decide si el contenido era admisible de entrada, y un sistema que deba permitir algo de HTML necesita un analizador y una lista de permitidos, no un escapador.
Preguntas frecuentes
- ¿Por qué mi página muestra <b> como texto?
- El contenido se escapó dos veces, casi siempre porque la regla del ampersand se ejecutó después de las demás o porque un valor ya escapado antes lo volvió a escapar la plantilla. Localiza la capa que lo hace de más en vez de descodificar al final.
- ¿Hay que escapar los cinco caracteres?
- En el texto de un elemento, el ampersand y los signos de menor y mayor son el mínimo. Dentro de valores de atributo hacen falta también las comillas, y como los escapadores rara vez saben a qué contexto alimentan, tratar los cinco es el valor por defecto seguro.