Created
August 12, 2014 02:10
-
-
Save greycode/06a5867fc0c406bd75fc to your computer and use it in GitHub Desktop.
javascript 对 HTML 做转义处理
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//$package("js.lang"); // 没有包管理时,也可简单写成 js = {lang:{}}; | |
js = {lang:{}}; | |
js.lang.String = function(){ | |
this.REGX_HTML_ENCODE = /"|&|'|<|>|[\x00-\x20]|[\x7F-\xFF]|[\u0100-\u2700]/g; | |
this.REGX_HTML_DECODE = /&\w+;|&#(\d+);/g; | |
this.REGX_TRIM = /(^\s*)|(\s*$)/g; | |
this.HTML_DECODE = { | |
"<" : "<", | |
">" : ">", | |
"&" : "&", | |
" ": " ", | |
""": "\"", | |
"©": "" | |
// Add more | |
}; | |
this.encodeHtml = function(s){ | |
s = (s != undefined) ? s : this.toString(); | |
return (typeof s != "string") ? s : | |
s.replace(this.REGX_HTML_ENCODE, | |
function($0){ | |
var c = $0.charCodeAt(0), r = ["&#"]; | |
c = (c == 0x20) ? 0xA0 : c; | |
r.push(c); r.push(";"); | |
return r.join(""); | |
}); | |
}; | |
this.decodeHtml = function(s){ | |
var HTML_DECODE = this.HTML_DECODE; | |
s = (s != undefined) ? s : this.toString(); | |
return (typeof s != "string") ? s : | |
s.replace(this.REGX_HTML_DECODE, | |
function($0,$1){ | |
var c = HTML_DECODE[$0]; | |
if(c == undefined){ | |
// Maybe is Entity Number | |
if(!isNaN($1)){ | |
c = String.fromCharCode(($1==160)?32:$1); | |
}else{ | |
c = $0; | |
} | |
} | |
return c; | |
}); | |
}; | |
this.trim = function(s){ | |
s = (s != undefined) ? s : this.toString(); | |
return (typeof s != "string") ? s : | |
s.replace(this.REGX_TRIM, ""); | |
}; | |
this.hashCode = function(){ | |
var hash = this.__hash__, _char; | |
if(hash == undefined || hash == 0){ | |
hash = 0; | |
for (var i = 0, len=this.length; i < len; i++) { | |
_char = this.charCodeAt(i); | |
hash = 31*hash + _char; | |
hash = hash & hash; // Convert to 32bit integer | |
} | |
hash = hash & 0x7fffffff; | |
} | |
this.__hash__ = hash; | |
return this.__hash__; | |
}; | |
}; | |
js.lang.String.call(js.lang.String); | |
js.lang.String.call(String.prototype); | |
// ('<&" />你好啊'.encodeHtml()) ==> <&"  />你好啊 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment