js对文本框的特殊字符进行编译和反编译,过滤的效果,常用于文本输入防止xss

以下为转译和反编译的代码

var HtmlUtil = {
		/*1.用浏览器内部转换器实现html转码*/
		htmlEncode: function(html) {
			//1.首先动态创建一个容器标签元素,如DIV  
			var temp = document.createElement("div");
			//2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)  
			(temp.textContent != undefined) ? (temp.textContent = html) : (temp.innerText = html);
			//3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了  
			var output = temp.innerHTML;
			temp = null;
			return output;
		},
		/*2.用浏览器内部转换器实现html解码*/
		htmlDecode: function(text) {
			//1.首先动态创建一个容器标签元素,如DIV  
			var temp = document.createElement("div");
			//2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)  
			temp.innerHTML = text;
			//3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。  
			var output = temp.innerText || temp.textContent;
			temp = 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, '"');
			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, "\"");
			return s;
		}
};


 


调用:var newStr= HtmlUtil.htmlEncodeByRegExp(str);

过滤特殊字符代码如下:

//过滤特殊字符串
function filterStr(str) {
	var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]");
	var specialStr = "";
	for(var i = 0; i < str.length; i++) {
		specialStr += str.substr(i, 1).replace(pattern, '');
	}
	return specialStr;
}



部分转载来自: http://blog.csdn.net/u013026207/article/details/53994032


你可能感兴趣的:(javascript)