一、用浏览器内部转换器实现转换

代码:

var HtmlUtil = {
// 1.用浏览器内部转换器实现html编码
htmlEncode: function(html) {
// 创建一个元素容器
var tempDiv = document.createElement('div');
// 把需要编码的字符串赋值给该元素的innerText(ie支持)或者textContent(火狐、谷歌等)
(tempDiv.textContent != undefined) ? (tempDiv.textContent = html) : (tempDiv.innerText = html);
var output = tempDiv.innerHTML;
tempDiv = null;
return output;
}, // 2.用浏览器内部转换器实现html解码
htmlDecode: function(text) {
// 创建一个元素容器
var tempDiv = document.createElement('div');
// 把解码字符串赋值给元素innerHTML
tempDiv.innerHTML = text;
// 最后返回这个元素的innerText(ie支持)或者textContent(火狐、谷歌等支持)
var output = tempDiv.innerText || tempDiv.textContent;
tempDiv = null;
return output;
}
}

测试:

var html = "<br>内容文字一<p>内容文字二</p>";
var encodeHtml = HtmlUtil.htmlEncode(html);
console.log("encodeHtml:" + encodeHtml);
var decodeHtml = HtmlUtil.htmlDecode(encodeHtml);
console.log("decodeHtml:" + decodeHtml);

结果:

// encodeHtml:&lt;br&gt;内容文字一&lt;p&gt;内容文字二&lt;/p&gt;
// decodeHtml:<br>内容文字一<p>内容文字二</p>

二、用正则表达式进行转换

编码原理就是把对应的<>空格符&'"替换成html编码。

解码原理就是把html编码替换成对应的字符。

实现:

var HtmlUtil = {
// 省略上次代码... // 3.使用正则实现html编码
htmlEncodeByRegExp: function(str) {
var s = '';
if(str.length === 0) {
return '';
}
s = str.replace(/&/g,'&amp;');
s = s.replace(/</g,'&lt;');
s = s.replace(/>/g,'&gt;');
s = s.replace(/ /g,'&nbsp;');
s = s.replace(/\'/g,''');
s= s.replace(/\"/g,'&quot;');
return s;
}, // 4.使用正则实现html解码
htmlDecodeByRegExp: function(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(/'/g,'\'');
s = s.replace(/&quot;/g,'\"');
return s;
}
}

测试:

var html = "<br>内容文字一<p>内容文字二</p>";
var encodeHtml = HtmlUtil.htmlEncodeByRegExp(html);
console.log("正则表达式编码html:" + encodeHtml);
var decodeHtml = HtmlUtil.htmlDecodeByRegExp(encodeHtml);
console.log("正则表达式解码html:" + decodeHtml);

结果:

// 正则表达式编码html:&lt;br&gt;内容文字一&lt;p&gt;内容文字二&lt;/p&gt;
// 正则表达式解码html:<br>内容文字一<p>内容文字二</p>

三、完整HtmlUtil工具类

var HtmlUtil = {
// 1.用浏览器内部转换器实现html编码
htmlEncode: function(html) {
// 创建一个元素容器
var tempDiv = document.createElement('div');
// 把需要编码的字符串赋值给该元素的innerText(ie支持)或者textContent(火狐、谷歌等)
(tempDiv.textContent != undefined) ? (tempDiv.textContent = html) : (tempDiv.innerText = html);
var output = tempDiv.innerHTML;
tempDiv = null;
return output;
}, // 2.用浏览器内部转换器实现html解码
htmlDecode: function(text) {
// 创建一个元素容器
var tempDiv = document.createElement('div');
// 把解码字符串赋值给元素innerHTML
tempDiv.innerHTML = text;
// 最后返回这个元素的innerText(ie支持)或者textContent(火狐、谷歌等支持)
var output = tempDiv.innerText || tempDiv.textContent;
tempDiv = null;
return output;
},
// 3.使用正则实现html编码
htmlEncodeByRegExp: function(str) {
var s = '';
if(str.length === 0) {
return '';
}
s = str.replace(/&/g,'&amp;');
s = s.replace(/</g,'&lt;');
s = s.replace(/>/g,'&gt;');
s = s.replace(/ /g,'&nbsp;');
s = s.replace(/\'/g,''');
s= s.replace(/\"/g,'&quot;');
return s;
}, // 4.使用正则实现html解码
htmlDecodeByRegExp: function(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(/'/g,'\'');
s = s.replace(/&quot;/g,'\"');
return s;
}
}

参考地址:https://www.cnblogs.com/xdp-gacl/p/3722642.html

JS处理html的编码(encode)与解码(decode)的更多相关文章

  1. Java如何进行Base64的编码(Encode)与解码(Decode)?

    https://blog.csdn.net/zhou_kapenter/article/details/62890262 *************************************** ...

  2. Java进行Base64的编码(Encode)与解码(Decode)

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  3. Java如何进行Base64的编码(Encode)与解码(Decode)

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  4. Python中编码encode()与解码decode()

    1 print('这是编码'.encode('utf-8')) # 结果 b'\xe8\xbf\x99\xe6\x98\xaf\xe7\xbc\x96\xe7\xa0\x81' 2 print('这是 ...

  5. Python编码(encode)和解码(Decode)常见的两个错误

    项目地址:https://git.io/pytips 0x07 和 0x08 分别介绍了 Python 中的字符串类型(str)和字节类型(byte),以及 Python 编码中最常见也是最顽固的两个 ...

  6. Python 编码encode()、 解码decode()问题

    乱码这种东西,时不时出现.本来开开心心想着我要学习啦,然后兴高采烈打开了比火星文还火星文的字符-- 没事,我可以搞定这堆鬼画符. 先来讲一下为什么有乱码这种东西的存在 故事是这样滴: 字符串是Pyth ...

  7. C++字符数字的编码(Encode)与解码(Decode)

    在日常应用中,我们常用结构体或者类来存储一条信息,这种方式很方便,但是不利于数据的传输.例如在网络编程中,我们需要将结构中的数据转化为字节流才能进行传输,我们可以利用memcpy强行将结构化的数据转化 ...

  8. Swift学习笔记 - URL编码encode与解码decode

    使用swift有一段时间了,api的变换造成了很多困扰,下面是关于url编码和解码问题的解决方案 在Swift中URL编码 在Swift中URL编码用到的是String的方法 func addingP ...

  9. CS程序中XML编码Encode和解码Decode

    VB6的代码,原则上只要是Windows系统均可以使用此方法 Function XMLEncode(ByVal text As String) As String Dim xmldoc Set xml ...

  10. python 编码与解码 decode解码 encode 编码

    >>> '无'   #gbk字符'\xce\xde'>>> str1 = '\xce\xde'>>> str1.decode('gbk')  # ...

随机推荐

  1. 解决方案 | 外接键盘win+d失效,绿联键盘win+d,win+e失效

    按下fn + 右边的win键 即可解决.如下图所示.

  2. [oeasy]python0132_[专业选修]utf-8_unicode_transformation_format_8_编码方式

    utf-8 回忆上次内容 上次再次输出了大红心<span style="color:red"></span> 找到了红心对应的编码 黑红梅方都对应有编码   ...

  3. [oeasy]python0089_大型机的衰落_Dec小型机崛起_PDP_VAX网络

    编码进化 回忆上次内容 上次 回顾了 计算机存储单位的演变 最小的读写单位 是 bit 8-bit 固定下来 成为了字节(Byte) 位数 容量 8-bit 1Byte 1024Byte 1 KB 1 ...

  4. ASP.NET Core 程序集注入(一)

    1.创建[特性]用于标注依赖注入 using Microsoft.Extensions.DependencyInjection; using System; using System.Collecti ...

  5. 2024 暑假友谊赛 1 (7.13)zhaosang

    A-A https://vjudge.net/contest/638765#problem/A 一开始贪心做不出来,后面发现是dp找到转移方程即可,01dp问题 代码如下 #include <b ...

  6. Git 克隆仓库报unable to get local issuer certificate错误解决方法

    Git 克隆仓库报unable to get local issuer certificate错误解决方法 By:授客 QQ:1033553122 问题描述 克隆gitlab上的仓库,报错,如下 $ ...

  7. QT 的 ModelView

    QApplication a(argc, argv); QDirModel model;    //QDirModel,   问文件目录树 QTreeView tree;    QListView l ...

  8. Jmeter强制结束线程

    例子:正常的线程是执行2次请求 1.需要实现结果 执行请求1后,判断test1=100,强制结束线程 执行请求1后,判断test1 != 100,继续执行请求2 2. 线程组改造 在请求1后面增加[i ...

  9. 前端使用 Konva 实现可视化设计器(19)- 连接线 - 直线、折线

    本章响应小伙伴的反馈,除了算法自动画连接线(仍需优化完善),实现了可以手动绘制直线.折线连接线功能. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ ...

  10. 【Vue2】 Watch 监听器

    监听器案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...