修改Htmlenties流行javascript函数以保留&书信电报;br>&引用;子串
我的问题是基于这个伟大的答案修改Htmlenties流行javascript函数以保留&书信电报;br>&引用;子串,javascript,string,function,replace,substring,Javascript,String,Function,Replace,Substring,我的问题是基于这个伟大的答案 函数属性(str){ 返回字符串(str).replace(//&/g,“&;”).replace(//g,”).replace(//“/g,”); } 我需要相同的字符串,但应将每个“”子字符串保留在字符串中。正在寻找修改函数htmlEntities的最佳方法 谢谢。还有比我的解决方案更聪明的吗 function htmlEntitiesModified(str) { return String(str).replace(/&/g, '&a
函数属性(str){
返回字符串(str).replace(//&/g,“&;”).replace(//g,”).replace(//“/g,”);
}
我需要相同的字符串,但应将每个“
”
子字符串保留在字符串中。正在寻找修改函数htmlEntities
的最佳方法
谢谢。还有比我的解决方案更聪明的吗
function htmlEntitiesModified(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace('<br>', '<br>');
}
//.replace('<br>', '<br>') was added to the end.
函数HTMLentiesModified(str){
返回字符串(str).replace(//&/g,“&&;”).replace(//g,”).replace(//“/g,”).replace('br',“
”);
}
//.replace('br','
')已添加到末尾。
请投票,如果这个解决方案是优雅和足够好,所以我知道。谢谢。试试看
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/<[^<br]/g, '<') // negate `<br`
.replace(/[^br+| \/>]>/g, '>') // negate `br>` or `br />`
.replace(/"/g, '"');
}
函数属性(str){
返回字符串(str)
.更换(/&/g,“&;”)
.替换(/`或`br/>`
.替换(/“/g,”);
}
var unsafestring=“
字符串”;
功能特性(str){
返回字符串(str).replace(//&/g,“&;”).replace(//g,”).replace(//“/g,”);
}
document.body.innerText=htmlEntities(不安全);
我很惊讶没有人回答这个问题。你可以自己使用浏览器来为你转义。没有任何正则表达式比让浏览器做它最擅长的事情更好或更安全,处理HTML
function escapeHTML(str){
var p = document.createElement("p");
p.appendChild(document.createTextNode(str));
return p.innerHTML;
}
或者使用构造函数的一个简短替代方案
function escapeHTML(str){
return new Option(str).innerHTML;
}
为什么需要修改?它会将“
”事件替换为“br”,但我应该将所有“
”保留在字符串中。只需在末尾添加
。replace(/br/g,
”)
?哦,你的意思是如果“br”的话,你不想替换
包含在内。@adeneo谢谢,我也这么做了,但你更快了。这足够好还是有陷阱?看起来不错。谢谢。这可能是计算强度最低的方法
function escapeHTML(str){
return new Option(str).innerHTML;
}