Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改Htmlenties流行javascript函数以保留&书信电报;br>&引用;子串_Javascript_String_Function_Replace_Substring - Fatal编程技术网

修改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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace('&lt;br&gt;', '<br>');
}

//.replace('&lt;br&gt;', '<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, '&amp;')
               .replace(/<[^<br]/g, '&lt;') // negate `<br`
               .replace(/[^br+| \/>]>/g, '&gt;') // negate `br>` or `br />`
               .replace(/"/g, '&quot;');
    }
函数属性(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;
}