zoukankan      html  css  js  c++  java
  • javascript另类方法高效实现htmlencode()与htmldecode()函数,附带PHP请求完整操作

    最常见的做法是采用正则表达式替换的方法,将特殊字符如 < > & 等进行替换,htmlencode的时候这样替换还比较容易,但发过来htmldecode的时候就不一定好用了,因为需要反转的情况很多,出了常见的&lt;&gt;&amp;以外,还有&nbsp;&copy;&quot;&reg;等数十个字符实体,还有&#65;&#66;&#20013;&#25991;或者&#x4E2D;&#x6587;之类以字符的Unicode编码的十进制或16进制表示的转义,难以全部列举,用逐个替换不仅代码冗长而且低效,还容易漏掉某些字符。

    代码如下:

        

    function htmlencode(s){  
        var div = document.createElement('div');  
        div.appendChild(document.createTextNode(s));  
        return div.innerHTML;  
    }  
    function htmldecode(s){  
        var div = document.createElement('div');  
        div.innerHTML = s;  
        return div.innerText || div.textContent;  
    }  

    相当简洁!

    编码原理就是创建TextNode节点,附加到容器中,再取容器的innerHTML.

    解码原理是将字符串赋給容器的innerHTML,再取innerText或textContent.

    测试一下:

    //测试  
    document.onclick = function (){  
        //&lt;p&gt; &amp; &lt;/p&gt;  
        alert(htmlencode('<p> & </p>'));  
      
        //<p> & © ABC 中文 中文 </p>  
        alert(htmldecode('&lt;p&gt; &amp; &copy; &#65;&#66;&#67; &#20013;&#25991; &#x4E2D;&#x6587; &lt;/p&gt;'));  
    }  

    效果不错。 

    应用实例:(TP5-由于不想使用ajax去获取数据,我是接收了后台php传过来的参数,所以html对json数据做了一些操作,所以要使用特定方法对这些数据进行转义处理),附后台代码

    1 $this->assign([
              "sumdata"=>$sumdata,"title"=>$this->title,"gameAttr"=>json_encode($gameAttr),"week"=>json_encode($dateArr),"weekdata"=>json_encode($new_weekdata)
              ]);

    由于后台传给前台,在js中接受php参数不能是数组,所以后台json_encode()进行json格式化,传给前台,然后在js中取php的值

     1 <script>
     2     //转义方法
     3     function HTMLDecode (input)
     4     {
     5         var converter = document.createElement("DIV");
     6         converter.innerHTML = input;
     7         var output = converter.innerText;
     8         converter = null;
     9         return output;
    10     }
    11     //环形图数据
    12     var game_attr=JSON.parse(HTMLDecode("{$gameAttr}"));
    13     //折线图一周内日期(由远到今)
    14     var week=JSON.parse(HTMLDecode("{$week}"));
    15     //一周内的数据
    16     var weekdata=JSON.parse(HTMLDecode("{$weekdata}"));
    17 </script>

    htmldecode对入参有要求,如果入参不是合法的encode后的结果,可能无法得到预期结果。

    声明:此博有部分内容为转载,版权归原作者所有~

    参考地址:https://www.cnblogs.com/waw/p/8452764.html

  • 相关阅读:
    第三章 kubernetes核心原理
    Jmeter
    Docker 入门学习
    第二章 Kuberbetes实践指南
    第一章 Kubernetes入门
    java中的引用与ThreadLocal
    Disruptor极速队列
    Redis设计与实现——单机数据库的实现
    Redis设计与实现——数据结构与对象
    python装饰器
  • 原文地址:https://www.cnblogs.com/T8888/p/12586471.html
Copyright © 2011-2022 走看看