方法一:
用的瀏覽器內部轉換器實現轉換,要領是動態建立一個容器標籤元素,如DIV,將要轉換的字串設定為這個元素的innerText(ie支援)||textContent(Firefox支援),然後返回這個元素的innerHTML,即得到經過HTML編碼轉換的字串,顯示的時候反過來就可以了(實際上顯示的時候不消通過轉換,直接賦值在div就可以正常顯示的)。
<script type="text/javascript"> function HTMLEncode(html) { var temp = document.createElement ("div"); (temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html); var output = temp.innerHTML; temp = null; return output; } function HTMLDecode(text) { var temp = document.createElement("div"); temp.innerHTML = text; var output = temp.innerText || temp.textContent; temp = null; return output; } var html = "<br>dffdf<p>qqqqq</p>"; var encodeHTML = HTMLEncode(html); alert("方法一:" +encodeHTML); var decodeHTML = HTMLDecode(encodeHTML); alert("方法一:" +decodeHTML); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
第二種方法: 正則替換
通過把Regex把<>和空格符轉換成html編碼,由於這種方法不是系統內建的所以很輕易出現有些特別標籤沒有替換的情況,並且效率低下
<script type="text/javascript"> function HTMLEncode2(str) { var s = ""; if(str.length == 0) return ""; s = str.replace(/&/g,"&"); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); s = s.replace(/ /g," "); s = s.replace(/\'/g,"'"); s = s.replace(/\"/g,"""); return s; } function HTMLDecode2(str) { var s = ""; if(str.length == 0) return ""; s = str.replace(/&/g,"&"); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); s = s.replace(/ /g," "); s = s.replace(/'/g,"\'"); s = s.replace(/"/g,"\""); return s; } var html = "<br>cccccaaaaa"; var encodeHTML = HTMLEncode2(html); alert("方法二:"+encodeHTML); var decodeHTML = HTMLDecode2(encodeHTML); alert("方法二:"+decodeHTML); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
大家可以先運行測試下,我也發現了,還是第一種方法比較好用啊,真不錯,大家一定要記住了。
另外還是一些編輯器使用的一些htmlencode函數,到時候大家根據需要添加,不過需要提醒的是,代碼一定要測試啊,雲棲社區 jb51.net站長發布這條資訊的時候測試確實很麻煩啊,修改了多次
複製代碼 代碼如下:
function HTMLEncode(text){
text = text.replace(/&/g, "&") ;
text = text.replace(/"/g, """) ;
text = text.replace(/</g, "<") ;
text = text.replace(/>/g, ">") ;
//text = text.replace(/\ /g," ");
text = text.replace(/\n/g,"<br>");
text = text.replace(/\t/g," ");
return text;
}