[英]Java escape HTML
目前我使用org.apache.commons.lang.StringEscapeUtils escapeHtml()
来逃避我的字符串中不需要的HTML标签,但后来我意识到它转义了带有重音符号的字符&something;,
也是我不想要的。
你是否知道任何逃避HTML标签的解决方案,但留下我的特别(好吧,对某些人来说,这里是正常的;])这些字母是什么?
提前致谢!
巴拉兹
StringUtils.replaceEach(str, new String[]{"&", "\"", "<", ">"}, new String[]{"&", """, "<", ">"})
如果是Android版,请改用TextUtils.htmlEncode(String)
。
这看起来对我很好:
组织/阿帕奇/公/ lang3 / StringEscapeUtils.html#将escapeXml(java.lang.String中)
通过询问XML,您将获得XHTML,这是一个很好的HTML。
这是一个替换OWASP推荐的六个重要字符的版本。 这适用于HTML内容元素,如<textarea>...</textarea>
,但不适用于<input value="...">
等HTML属性,因为后者通常不加引号。
StringUtils.replaceEach(text,
new String[]{"&", "<", ">", "\"", "'", "/"},
new String[]{"&", "<", ">", """, "'", "/"});
我知道添加我的评论为时已晚,但以下代码可能会有所帮助:
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();
}
请享用!
如果您使用的是Wicket,请使用:
import org.apache.wicket.util.string.Strings;
...
CharSequence cs = Strings.escapeMarkup(src);
String str = Strings.escapeMarkup(src).toString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.