// 字符串反转义
function enXssHtml(text) {
const matchList = {
"<": "<",
">": ">",
"&": "&",
"": '""',
""": '"',
"'": "'",
}
let regStr = "(" + Object.keys(matchList).toString() + ")"
// ↑ ------------【 提取匹配列表key值 】.【组数转字符串】
regStr = regStr.replace(/,/g, ")|(")
// ↑ 通过匹配将其更新为正则的字符串类型
const regExp = new RegExp(regStr, "g")
// ↑ ------- 字符串 转 正则 方法
return text.replace(regExp, (match) =>matchList[match])
// ↑ ------ 替换方法 (正则, 当前key =>返回当前被匹配的key值)
}
// 字符串反转义
function deXssHtml(text) {
const matchList = {
"<": "<",
">": ">",
"&": "&",
'"': '"',
'"': '"',
"'": "'",
}
let regStr = "(" + Object.keys(matchList).toString() + ")"
// ↑ ------------【 提取匹配列表key值 】.【组数转字符串】
regStr = regStr.replace(/,/g, ")|(")
// ↑ 通过匹配将其更新为正则的字符串类型
const regExp = new RegExp(regStr, "g")
// ↑ ------- 字符串 转 正则 方法
return text.replace(regExp, (match) =>matchList[match])
// ↑ ------ 替换方法 (正则, 当前key =>返回当前被匹配的key值)
}
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
}
var tagText = "<p><b>123&456</b></p>"
console.log(HTMLEncode(tagText))//<p><b>123&456</b></p>
function HTMLDecode(text) {
var temp = document.createElement("div")
temp.innerHTML = text
var output = temp.innerText || temp.textContent
temp = null
return output
}
var tagText = "<p><b>123&456</b></p>"
var encodeText=HTMLEncode(tagText)
console.log(encodeText) //<p><b>123&456</b></p>
console.log(HTMLDecode(encodeText)) //<p><b>123&456</b></p>
/*1.用浏览器内部转换器实现html编码(转义)*/
htmlEncode : function (html){
//.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement ("div")
//然后将要转换的字符串设置为这个元素的innerText或者textContent
(temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html)
//最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
var output = temp.innerHTML
temp = null
return output
},
/*2.用浏览器内部转换器实现html解码(反转义)*/
htmlDecode : function (text){
//首先动态创建一个容器标签元素,如DIV
var temp = document.createElement("div")
//.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)
temp.innerHTML = text
//最后返回这个元素的innerText或者textContent,即得到经过HTML解码的字符串了。 var output = temp.innerText || temp.textContent
temp =null
return output
},
注:这两种方法都是利用innerHTML会编译字符串来实现转义和反转义
/*3.用正则表达式实现html编码(转义)*/
htmlEncodeByRegExp : function (str){
var temp = " "
if(str.length == 0)
return " "
temp = str.replace(/&/g,"&")
temp = temp.replace(//g,">")
temp = temp.replace(/\s/g," ")
temp = temp.replace(/\'/g,"'")
temp = temp.replace(/\"/g,""")
return temp
},
/*4.用正则表达式实现html解码(反转义)*/
htmlDecodeByRegExp:function (str){
var temp = ""
if (str.length == 0)
return " "
temp = str.replace(/&/g,"&")
temp = temp.replace(/</g,"<")
temp = temp.replace(/>/g,">")
temp = temp.replace(/ /g," ")
temp = temp.replace(/'/g,"\'")
temp = temp.replace(/"/g,"\"")
return temp
},
/*5.用正则表达式实现html编码(转义)(另一种写法)*/
html2Escape : function(sHtml) {
return sHtml.replace (/[<>&"]/g,function(c){return{'<':'<','>':'>','&':'&','"':'"'}[c]})
},
/*6.用正则表达式实现html解码(反转义)(另一种写法)*/
escape2Html : function (str) {
var arrEntities = {'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'}
return str.replace(/&(lt|gt|nbsp|amp|quot)/ig,function(all,t){return arrEntities[t]})
}
原文地址: https://www.cnblogs.com/willingtolove/p/11059325.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)