Java转义HTML

目前我使用org.apache.commons.lang.StringEscapeUtils escapeHtml()在我的string中转义不需要的HTML标签,但后来我意识到它逃脱了与&something;,我也不想要的东西。

你知道任何逃避HTML标签的解决scheme,但离开我的特殊(嗯,对于一些人,这是正常的这里;))字母,因为它们是?

提前致谢!

巴拉兹

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

如果是Android,请改用TextUtils.htmlEncode(String)

这对我来说很好:

组织/阿帕奇/公/ lang3 / StringEscapeUtils.html#将escapeXml(java.lang.String中)

通过询问XML,您将获得XHTML,这是很好的HTML。

这是一个replaceOWASPbuild议的六个重要字符的版本。 这适用于像<textarea>...</textarea>这样的HTML内容元素,而不是像<input value="...">这样的HTML属性,因为后者通常不加引号。

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

如果您使用Wicket,请使用:

 import org.apache.wicket.util.string.Strings; ... CharSequence cs = Strings.escapeMarkup(src); String str = Strings.escapeMarkup(src).toString(); 

我知道join我的评论为时已晚,但也许下面的代码会有所帮助:

 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("&lt;"); break; case '>': escapedTxt.append("&gt;"); break; case '&': escapedTxt.append("&amp;"); break; case '"': escapedTxt.append("&quot;"); break; case '\'': escapedTxt.append("&#x27;"); break; case '/': escapedTxt.append("&#x2F;"); break; default: escapedTxt.append(tmp); } } return escapedTxt.toString(); } 

请享用!