当前位置 博文首页 > 程序员石磊:从富文本编辑器获取html内容组装json,特殊字符引起

    程序员石磊:从富文本编辑器获取html内容组装json,特殊字符引起

    作者:[db:作者] 时间:2021-08-08 10:16

    最近项目需要,需要从富文本编辑器获取html内容组装json,然后还要

    把组装后的json对象利用json2转成json字符串,数据放入编辑器提交,由于兼容ie8以上浏览器。所以搞了好久的特殊字符转义,经常出错。我们一般想到的解决办法就是转义:

    /*3.用正则表达式实现html转码*/
    function htmlEncodeByRegExp(str){
        var s = "";
        if(str.length == 0) return "";
        s = str.replace(/&/g,"&");
        s = s.replace(/</g,"&lt;");
        s = s.replace(/>/g,"&gt;");
        s = s.replace(/ /g,"");
        s = s.replace(/\'/g,"&#39;");
        s = s.replace(/\"/g,"&quot;");
        s = s.replace(/\n"/g,"");
        s = s.replace(/\r"/g,"");
        return s;
    }
    /*4.用正则表达式实现html解码*/
    function htmlDecodeByRegExp (str){
        var s = "";
        if(str.length == 0) return "";
        s = str.replace(/&amp;/g,"&");
        s = s.replace(/&lt;/g,"<");
        s = s.replace(/&gt;/g,">");
        s = s.replace(/&nbsp;/g," ");
        s = s.replace(/&#39;/g,"\'");
        s = s.replace(/&quot;/g,"\"");
        return s;
    }
    json字符串本身的引号 和 html里面的引号,在转码后没法区分哪些是数据格式,哪些属于从编辑器获取的Html里面的。
    后来想到一种解决办法,就是对从富文本编辑器里面的内容进行base64编码,展示的时候再解码,就完全屏蔽掉了所有的特殊字符。
    因此采用了jquery.base64.js.具体使用方法是:
    

    编码

       dec.val($.base64.btoa(this.value));
                // also possible:
                // dec.val( $.base64('encode', this.value) );
                // dec.val( $.base64.encode(this.value) );

    解码

     // note: you can pass a third parameter to use the utf8 en- / decode option
                enc.val($.base64.atob(this.value, true));
                // also possible:
                // dec.val( $.base64('decode', this.value) );
                // dec.val( $.base64.decode(this.value) );
    cs
    下一篇:没有了