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

代码:

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. [oeasy]python0086_ASCII_出现背景_1963年_DEC_PDP系列主机_VT系列终端

    编码进化 回忆上次内容 上次 回顾了 字符编码的新陈代谢 ibm 曾经的EBCDIC 由于 字符不连续 导致 后续 出现无数问题 随着 网络的发展 数据交换的 需要 原来的小隐患 现在 产生了 巨大问 ...

  2. AI时代你一定要知道的Agent概念

    这两年,随着人工智能(AI)和计算能力的发展,AI应用的落地速度大大加快.以ChatGPT为代表的AI应用迅速火遍全球,成为打工人的常用工具.紧接着,多模态.AI Agent等各种高大尚的名词也逐渐进 ...

  3. PointNet笔记

    可能遇到的问题 在windows上运行pointnet的代码时,可能会遇到一些问题: 1.比如提示OSError: no file with expected extension, 这是因为可视化的s ...

  4. vscode 调试 nodejs 程序

    nodejs 服务在vscode 中的调试 1.安装vscode 略(这不用说了吧) 2.写一个能跑的nodejs 程序 其实看到这个,自己已经有一个能跑的nodejs 程序,不用看我的了 我这里是我 ...

  5. ComfyUI插件:ComfyUI layer style 节点(一)

    前言: 学习ComfyUI是一场持久战,而ComfyUI layer style 是一组专为图片设计制作且集成了Photoshop功能的强大节点.该节点几乎将PhotoShop的全部功能迁移到Comf ...

  6. vue页面加载慢,chunk-vendors.js文件太大

    今天拉取合并了同事的代码后页面加载速度变得非常慢,经过排查发现是因为加载的chunk-vendors.js太大 58m 28s就很离谱 经过同事指导加上百度终于找到解决办法,配置compression ...

  7. 训练人形机器人时如何收集人类行为数据 —— 通过人来训练机器人(真人实际演示动作)or 仿真环境自动生成 —— 哪种方式更优、更可行呢

    特斯拉的老马,搞的optimus人形机器人就是通过人来训练机器人(真人实际演示动作),但是未来使用仿真环境自动生成数据是否可行呢,NVIDIA的老黄在2024 GTC上是大力推出自家的GROOT平台, ...

  8. 全球最大开源模型Grok-1 —— 马斯克 —— 自然语言大模型

    当前世界上参数最大的开源大语言模型Grok-1,参数权重大小为296GB,即3140亿参数,远远超过了OpenAI的GPT-3.5模型. 该模型采用的3140亿参数的MoE模型,在给定token上的激 ...

  9. MindSpore框架 加载文本数据集 示例

    代码原地址: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/use/load_dataset_text.html ============ ...

  10. 易拍照 —— 毕业生图像采集操作指南——如何使用 “易拍照” 微信小程序进行图像采集

    易拍照 -- 毕业生图像采集操作指南--如何使用 "易拍照" 微信小程序进行图像采集 ============================================