Ответ 1
StringUtils.replaceEach(str, new String[]{"&", "\"", "<", ">"}, new String[]{"&", """, "<", ">"})
в настоящее время я использую org.apache.commons.lang.StringEscapeUtils escapeHtml()
, чтобы избежать нежелательных HTML-тегов в моих строках, но затем я понял, что он также избегает символов с акцентами на &something;,
, чего я не хочу.
Знаете ли вы какое-либо решение для экранирования HTML-тегов, но оставляете мои специальные (ну, для некоторых людей, они здесь нормальные), буквы такие как?
Спасибо заранее!
Болаж
StringUtils.replaceEach(str, new String[]{"&", "\"", "<", ">"}, new String[]{"&", """, "<", ">"})
Если это для Android, используйте TextUtils.htmlEncode(String)
вместо этого.
Это выглядит очень хорошо для меня:
org/apache/commons/lang3/StringEscapeUtils.html # escapeXml (java.lang.String)
Запросив XML, вы получите XHTML, который является хорошим HTML.
Здесь версия, которая заменяет шесть значащих символов, как рекомендовано OWASP. Это подходит для элементов содержимого HTML, таких как <textarea>...</textarea>
, но не атрибутов HTML, таких как <input value="...">
, потому что последние часто остаются без кавычек.
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();
Я знаю, что слишком поздно добавлять комментарий, но, возможно, следующий код будет полезен:
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();
}
наслаждайтесь!