java實現HTML標籤轉義和反轉義(StringEscapeUtils)
阿新 • • 發佈:2019-02-03
轉義:有時需要對帶有格式的長文字(如個人文章或評論等)進行轉義後儲存到資料庫表中。
例如:String EsHtml="<p>我的<br/>評論</p>";
轉義後為"<p>我的<br/>評論</p>"
反轉義:資料庫中儲存的轉義後的文字有時需要反轉至頁面。
例如:字串: "<p>我的<br/>評論</p>"
反轉義後為"<p>我的<br/>評論</p>"
在apache的工具包common-lang中有StringEscapeUtils工具類,可以對HTML標籤進行轉義和反轉義,但是該工具類的轉義方法escapeHtml對於中文字元相容性不是很好,因此需要自定義方法對特殊字元進行處理。
1、HTML標籤轉義:
public class test { public static void main(String[] args) { StringHTMLText="<p>我的<br/>評論</p>"; Stringtext=htmlEncode(HTMLText); System.out.println(text); } public static String htmlEncode(String source) { if(source == null) { return ""; } String html = ""; StringBuffer buffer = new StringBuffer(); for(int i = 0; i < source.length(); i++) { char c = source.charAt(i); switch (c) { case '<': buffer.append("<"); break; case '>': buffer.append(">"); break; case '&': buffer.append("&"); break; case '"': buffer.append("""); break; case 10: case 13: break; default: buffer.append(c); } } html = buffer.toString(); return html; } }
輸出結果為:<p>我的<br/>評論</p>
2、HTML標籤反轉義:
public static void main(String[] args) { String HTMLText="<p>我的<br/>評論</p>"; System.out.println(StringEscapeUtils.unescapeHtml(HTMLText)); } public static void main(String[] args) { String HTMLText="<p>我的<br/>評論</p>"; System.out.println(StringEscapeUtils.unescapeHtml(HTMLText)); }
輸出結果為:<p>我的<br/>評論</p>,