html转义反转义

html转义反转义,第1张

// 字符串反转义

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8339965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存