java - htmlentities - html encode chars
Java escape HTML (6)
Aquí hay una versión que reemplaza a los seis personajes importantes recomendados por OWASP . Esto es adecuado para elementos de contenido HTML como <textarea>...</textarea>
, pero no atributos HTML como <input value="...">
porque estos últimos a menudo se dejan sin comillas.
StringUtils.replaceEach(text,
new String[]{"&", "<", ">", "/"", "''", "/"},
new String[]{"&", "<", ">", """, "'", "/"});
actualmente utilizo org.apache.commons.lang.StringEscapeUtils escapeHtml()
para escapar etiquetas HTML no deseadas en mis cadenas, pero luego me di cuenta de que escapa a los caracteres con acentos a &something;,
, también, que no quiero.
¿Conoces alguna solución para escaparse de las etiquetas HTML, pero dejar mis cartas especiales (bueno, para algunas personas, son normales aquí;]) tal como son?
¡Gracias por adelantado!
balázs
Esto se ve muy bien para mí:
org/apache/commons/lang3/StringEscapeUtils.html#escapeXml(java.lang.String)
Al preguntar a XML, obtendrá XHTML, que es un buen HTML.
Sé que es demasiado tarde para agregar mi comentario, pero tal vez el siguiente código sea útil:
public static String escapeHtml(String string) {
StringBuilder escapedTxt = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
char tmp = string.charAt(i);
switch (tmp) {
case ''<'':
escapedTxt.append("<");
break;
case ''>'':
escapedTxt.append(">");
break;
case ''&'':
escapedTxt.append("&");
break;
case ''"'':
escapedTxt.append(""");
break;
case ''/''':
escapedTxt.append("'");
break;
case ''/'':
escapedTxt.append("/");
break;
default:
escapedTxt.append(tmp);
}
}
return escapedTxt.toString();
}
¡disfrutar!
Si es para Android, use TextUtils.htmlEncode(String)
lugar.
Si está usando Wicket, use:
import org.apache.wicket.util.string.Strings;
...
CharSequence cs = Strings.escapeMarkup(src);
String str = Strings.escapeMarkup(src).toString();
StringUtils.replaceEach(str, new String[]{"&", "/"", "<", ">"}, new String[]{"&", """, "<", ">"})