JS处理html的编码(encode)与解码(decode)
一、用浏览器内部转换器实现转换
代码:
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:<br>内容文字一<p>内容文字二</p>
// decodeHtml:<br>内容文字一<p>内容文字二</p>
二、用正则表达式进行转换
编码原理就是把对应的<
、>
、空格符
、&
、'
、"
替换成html编码。
解码原理就是把html编码替换成对应的字符。
实现:
var HtmlUtil = {
// 省略上次代码...
// 3.使用正则实现html编码
htmlEncodeByRegExp: function(str) {
var s = '';
if(str.length === 0) {
return '';
}
s = str.replace(/&/g,'&');
s = s.replace(/</g,'<');
s = s.replace(/>/g,'>');
s = s.replace(/ /g,' ');
s = s.replace(/\'/g,''');
s= s.replace(/\"/g,'"');
return s;
},
// 4.使用正则实现html解码
htmlDecodeByRegExp: function(str) {
var s = '';
if(str.length === 0) {
return '';
}
s = str.replace(/&/g, '&');
s = s.replace(/</g,'<');
s = s.replace(/>/g,'>');
s = s.replace(/ /g,' ');
s = s.replace(/'/g,'\'');
s = s.replace(/"/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:<br>内容文字一<p>内容文字二</p>
// 正则表达式解码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,'&');
s = s.replace(/</g,'<');
s = s.replace(/>/g,'>');
s = s.replace(/ /g,' ');
s = s.replace(/\'/g,''');
s= s.replace(/\"/g,'"');
return s;
},
// 4.使用正则实现html解码
htmlDecodeByRegExp: function(str) {
var s = '';
if(str.length === 0) {
return '';
}
s = str.replace(/&/g, '&');
s = s.replace(/</g,'<');
s = s.replace(/>/g,'>');
s = s.replace(/ /g,' ');
s = s.replace(/'/g,'\'');
s = s.replace(/"/g,'\"');
return s;
}
}
参考地址:https://www.cnblogs.com/xdp-gacl/p/3722642.html
JS处理html的编码(encode)与解码(decode)的更多相关文章
- Java如何进行Base64的编码(Encode)与解码(Decode)?
https://blog.csdn.net/zhou_kapenter/article/details/62890262 *************************************** ...
- Java进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- Java如何进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- Python中编码encode()与解码decode()
1 print('这是编码'.encode('utf-8')) # 结果 b'\xe8\xbf\x99\xe6\x98\xaf\xe7\xbc\x96\xe7\xa0\x81' 2 print('这是 ...
- Python编码(encode)和解码(Decode)常见的两个错误
项目地址:https://git.io/pytips 0x07 和 0x08 分别介绍了 Python 中的字符串类型(str)和字节类型(byte),以及 Python 编码中最常见也是最顽固的两个 ...
- Python 编码encode()、 解码decode()问题
乱码这种东西,时不时出现.本来开开心心想着我要学习啦,然后兴高采烈打开了比火星文还火星文的字符-- 没事,我可以搞定这堆鬼画符. 先来讲一下为什么有乱码这种东西的存在 故事是这样滴: 字符串是Pyth ...
- C++字符数字的编码(Encode)与解码(Decode)
在日常应用中,我们常用结构体或者类来存储一条信息,这种方式很方便,但是不利于数据的传输.例如在网络编程中,我们需要将结构中的数据转化为字节流才能进行传输,我们可以利用memcpy强行将结构化的数据转化 ...
- Swift学习笔记 - URL编码encode与解码decode
使用swift有一段时间了,api的变换造成了很多困扰,下面是关于url编码和解码问题的解决方案 在Swift中URL编码 在Swift中URL编码用到的是String的方法 func addingP ...
- CS程序中XML编码Encode和解码Decode
VB6的代码,原则上只要是Windows系统均可以使用此方法 Function XMLEncode(ByVal text As String) As String Dim xmldoc Set xml ...
- python 编码与解码 decode解码 encode 编码
>>> '无' #gbk字符'\xce\xde'>>> str1 = '\xce\xde'>>> str1.decode('gbk') # ...
随机推荐
- Python代码学习
1.生成四位数字字母验证码,大小写字母随机 import random if __name__ =="__main__": #四位数字字母验证码的生成 checkcode=&quo ...
- 解决方案 | 预装win11如何退回win10?
0.定义 本文所说的[退回]并不指的是win10升级后的变成win11再变为win10的退回.退回应该理解为[降级],或者叫作返回上一个版本.本文的适用范围局限于,预装系统是win11,想要不通过u盘 ...
- oeasy教您玩转vim - 24 - 自定颜色
自定颜色 回忆上节课内容 这次我们研究了配色方案 找到了 colors 的位置 下载并应用了颜色方案 制作了自己的配色方案 下面我想修改配色方案的颜色 是否能成功??? 首先得有自己的颜色方案 #找到 ...
- 为什么StampedLock会导致CPU100%?
StampedLock 是 Java 8 引入的一种高级的锁机制,它位于 java.util.concurrent.locks 包中.与传统的读写锁(ReentrantReadWriteLock)相比 ...
- RSA加解密,Java和C#互通
一.使用场景 Java作为服务端生成一对公私钥,C#作为客户端拥有公钥. RSA算法这里就不多做介绍了,可参考RSA算法介绍 二.规范 公私钥的形式都是base64字符串 通过公私钥加密后的字符串也是 ...
- Notepad++实现代码格式化
NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快,Notepad++本身是不带这个格式化功能的,但他支持NppAStyle插件完成格式化. 1. 下载插件NppAStyle.dll, ...
- CF1929B Sasha and the Drawing 题解
CF1929B 题意 给定一个 \(n\times n\) 的正方形,已知正方形最多有 \(4\times n-2\) 条对角线,要求要有至少 \(k\) 条对角线经过至少一块黑色方格,求至少要将几条 ...
- php 选择驱动写法
在 ThinkPHP 5.1 中,若要根据配置文件 sms.conf 中的设置在不同的短信渠道之间进行切换,可以采用以下步骤: 第一步:定义接口 首先,创建一个接口,这个接口将由所有短信渠道类实现.这 ...
- 算法·理论:KMP 学习笔记
\(\text{KMP}\) 笔记! 上次比赛,出题人出了一个 \(\text{KMP}\) 模板,我敲了个 \(\text{SAM}\) 跑了,但是学长给的好题中又有很多 \(\text{KMP}\ ...
- 【MySQL】Tinyint 类型问题
下发字段: `DISTRIBUTION_STATUS` tinyint(1) DEFAULT '0' COMMENT '下发状态,0未下发,1已下发,2已作废', Mybatis封装之后日志打印也确实 ...