我最终让JsHtmlSanitizer作为独立的客户端脚本工作。现在我想从字符串中删除所有 HTML 标记,而不仅仅是脚本标记和链接。这个例子
html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');
返回“你好”,但我想删除所有标签。
我最终让JsHtmlSanitizer作为独立的客户端脚本工作。现在我想从字符串中删除所有 HTML 标记,而不仅仅是脚本标记和链接。这个例子
html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');
返回“你好”,但我想删除所有标签。
为什么不使用正则表达式在清理后删除所有 HTML 标签?
var input = '<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"></script>';
var output = null;
output = html_sanitize(input);
output = output.replace(/<[^>]+>/g, '');
这应该在清理后去除所有html 标记的输入字符串。
如果您只想进行基本清理(删除脚本和样式标签及其内容和所有 html 标签),您可以在正则表达式中实现整个事情。我在下面演示了一个示例。
var input = '<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"></script>';
input += '<script> if (1 < 2) { alert("This script should be removed!"); } </script><style type="text/css">.cssSelectorShouldBeRemoved > .includingThis { background-color: #FF0000; } </style>';
var output = null;
output = input.replace(/(?:<(?:script|style)[^>]*>[\s\S]+?<\/(?:script|style)[^>]*>)|<[^>]+>/ig, '');
使用下面的这个 javascript 函数从您从html_sanitize()获得的字符串中删除所有 html 标记。
var output = html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');
output = output.replace(/(<.*?>)/ig,"");
希望能帮助到你 :)