Java转义HTML
目前我使用org.apache.commons.lang.StringEscapeUtils escapeHtml()
在我的string中转义不需要的HTML标签,但后来我意识到它逃脱了与&something;,
我也不想要的东西。
你知道任何逃避HTML标签的解决scheme,但离开我的特殊(嗯,对于一些人,这是正常的这里;))字母,因为它们是?
提前致谢!
巴拉兹
StringUtils.replaceEach(str, new String[]{"&", "\"", "<", ">"}, new String[]{"&", """, "<", ">"})
如果是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[]{"&", "<", ">", """, "'", "/"});
如果您使用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("<"); 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(); }
请享用!