繁体   English   中英

Java转义HTML

[英]Java escape HTML

目前我使用org.apache.commons.lang.StringEscapeUtils escapeHtml()来逃避我的字符串中不需要的HTML标签,但后来我意识到它转义了带有重音符号的字符&something;,也是我不想要的。

你是否知道任何逃避HTML标签的解决方案,但留下我的特别(好吧,对某些人来说,这里是正常的;])这些字母是什么?

提前致谢!

巴拉兹

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。

这是一个替换OWASP推荐的六个重要字符的版本。 这适用于HTML内容元素,如<textarea>...</textarea> ,但不适用于<input value="...">等HTML属性,因为后者通常不加引号。

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

我知道添加我的评论为时已晚,但以下代码可能会有所帮助:

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();
}

请享用!

如果您使用的是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM