zoukankan      html  css  js  c++  java
  • javascript對文本encode編碼

             //source輸入的文本
       //dispaly爲true,表示格式化特殊字符,如把輸入的空格替換成&nbsp;換行替(\r\n))換成<br>
       //tabs默認爲4
      function htmlEncode(source, display, tabs)
      {
       function special(source)
       {
        var result = '';
        for (var i = 0; i < source.length; i++)
        {
         var c = source.charAt(i);
         if (c < ' ' || c > '~')
         {
          c = '&#' + c.charCodeAt() + ';';
         }
         result += c;
        }
        return result;
       }
       
       function format(source)
       {
        // Use only integer part of tabs, and default to 4
        tabs = (tabs >= 0) ? Math.floor(tabs) : 4;
        
        // split along line breaks
        var lines = source.split(/\r\n|\r|\n/);
        
        // expand tabs
        for (var i = 0; i < lines.length; i++)
        {
         var line = lines[i];
         var newLine = '';
         for (var p = 0; p < line.length; p++)
         {
          var c = line.charAt(p);
          if (c === '\t')
          {
           var spaces = tabs - (newLine.length % tabs);
           for (var s = 0; s < spaces; s++)
           {
            newLine += ' ';
           }
          }
          else
          {
           newLine += c;
          }
         }
         // If a line starts or ends with a space, it evaporates in html
         // unless it's an nbsp.
         newLine = newLine.replace(/(^ )|( $)/g, '&nbsp;');
         lines[i] = newLine;
        }
        
        // re-join lines
        var result = lines.join('<br />');
        
        // break up contiguous blocks of spaces with non-breaking spaces
        result = result.replace(/  /g, ' &nbsp;');
        
        // tada!
        return result;
       }

       var result = source;
       
       // ampersands (&)
       result = result.replace(/\&/g,'&amp;');

       // less-thans (<)
       result = result.replace(/\</g,'&lt;');

       // greater-thans (>)
       result = result.replace(/\>/g,'&gt;');
       
       if (display)
       {
        // format for display
        result = format(result);
       }
       else
       {
        // Replace quotes if it isn't for display,
        // since it's probably going in an html attribute.
        result = result.replace(new RegExp('"','g'), '&quot;');
       }

       // special characters
       result = special(result);
       
       // tada!
       return result;
      }

  • 相关阅读:
    嵌入式框架Zorb Framework搭建五:事件的实现
    C#网络编程系列文章(五)之Socket实现异步UDP服务器
    C#SocketAsyncEventArgs实现高效能多并发TCPSocket通信 (服务器实现)
    C#中的ManagementClass类
    Etcd v3备份与恢复
    kubernetes调度重平衡工具 Descheduler
    K8S – 优化dns解析时间
    kubernetes备份和恢复
    Coredns部署更新
    认识Kubernetes Descheduler
  • 原文地址:https://www.cnblogs.com/wang123/p/868722.html
Copyright © 2011-2022 走看看