2

我最终让JsHtmlSanitizer作为独立的客户端脚本工作。现在我想从字符串中删除所有 HTML 标记,而不仅仅是脚本标记和链接。这个例子

html_sanitize('<b>hello</b><img src="http://google.com"><a href="javascript:alert(0)"><script src="http://www.google.com"><\/script>');

返回“你好”,但我想删除所有标签。

4

2 回答 2

0

为什么不使用正则表达式在清理后删除所有 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, '');
于 2012-12-28T07:54:26.880 回答
0

使用下面的这个 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,"");

希望能帮助到你 :)

于 2012-12-28T10:56:43.733 回答