37 votes

Échapper au HTML

J'utilise actuellement org.apache.commons.lang.StringEscapeUtils escapeHtml() pour échapper aux balises HTML non désirées dans mes chaînes, mais je me suis rendu compte que cela échappait également aux caractères accentués à &something;, , ce que je ne souhaite pas.

Connaissez-vous une solution pour échapper aux balises HTML, mais laissez mes lettres spéciales (bien, pour certaines personnes, elles sont normales ici;]) telles quelles?

Merci d'avance!

balázs

30voto

pingw33n Points 6428
StringUtils.replaceEach(str, new String[]{"&", "\"", "<", ">"}, new String[]{"&amp;", "&quot;", "&lt;", "&gt;"})

21voto

goncalossilva Points 1372

Si c'est pour Android, utilisez plutôt TextUtils.htmlEncode(String) .

9voto

Cela me semble très bien:

org / apache / commons / lang3 / StringEscapeUtils.html # escapeXml (java.lang.String)

En demandant XML, vous obtiendrez XHTML, qui est un bon HTML.

À votre santé,

Nicolas

5voto

user113215 Points 4402

Voici une version qui remplace les six caractères significatifs recommandés par OWASP . Cela convient aux éléments de contenu HTML tels que <textarea>...</textarea> , mais pas aux attributs HTML tels que <input value="..."> car ces derniers ne sont souvent pas cités.

 StringUtils.replaceEach(text,
        new String[]{"&", "<", ">", "\"", "'", "/"},
        new String[]{"&amp;", "&lt;", "&gt;", "&quot;", "&#x27;", "&#x2F;"});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X