1. 程式人生 > >java實現HTML標籤轉義和反轉義(StringEscapeUtils)

java實現HTML標籤轉義和反轉義(StringEscapeUtils)

轉義:有時需要對帶有格式的長文字(如個人文章或評論等)進行轉義後儲存到資料庫表中。

      例如:String EsHtml="<p>我的<br/>評論</p>";

                 轉義後為"&lt;p&gt;我的&lt;br/&gt;評論&lt;/p&gt"

反轉義:資料庫中儲存的轉義後的文字有時需要反轉至頁面。

      例如:字串: "&lt;p&gt;我的&lt;br/&gt;評論&lt;/p&gt"

                 反轉義後為"<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;
    }
}

輸出結果為:&lt;p&gt;我的&lt;br/&gt;評論&lt;/p&gt;


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>,