js转html实体的方法

heicxsudoblog 2019-05-08

方法一:

用的浏览器内部转换器实现转换,方法是动态创建一个容器标签元素,如DIV,将要转换的字符串设置为这个元素的innerText,然后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串。

function HTMLEncode ( input ) 
{ 
var converter = document.createElement("DIV"); 
converter.innerText = input; 
var output = converter.innerHTML; 
converter = null; 
return output; 
}

当 然,还可以用相同的方法实现对字符串的HTMLDecode解码,但有个问题就是紧跟在字符" <"后面的非空字符将连同字符" <"同时显示不出来。当然,对字符串作相应处理是可以解决这个问题的,比如在字符" <"后面加个空格,解码后再去掉就行,这是后话。毕竟,要使用 HTMLDecode方法解码,自然是字符串已经经过HTMLEncode方法编码了,而经过HTMLEncode编码后的字符串,是不可能有字符 " <"存在的。

function HTMLDecode ( input ) 
{ 
var converter = document.createElement("DIV"); 
converter.innerHTML = input; 
var output = converter.innerText; 
converter = null; 
return output; 
}

方法二:

<script  language=javascript> 

 function  HTMLEnCode(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,   """); 
    s  =  s.replace(/\n/g,   " <br>"); 
    return  s; 
 } 
 function  HTMLDeCode(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,   "\""); 
    s  =  s.replace(/ <br>/g,   "\n"); 
    return  s; 
 } 
 </script>

相关推荐