我想从字符串中删除HTML标记.例如,假设我们有字符串:
<p> example ive got a string</P>
Run Code Online (Sandbox Code Playgroud)
如何编写一个删除的函数<p><p>并返回"example ive have a string"?
Jon*_*Jon 126
使用.text()功能:
var text = $("<p> example ive got a string</P>").text();
Run Code Online (Sandbox Code Playgroud)
更新:正如Brilliand在下面指出的那样,如果输入字符串不包含任何标记,并且您不够运行,则可能会将其视为CSS选择器.所以这个版本更强大:
var text = $("<div/>").html("<p> example ive got a string</P>").text();
Run Code Online (Sandbox Code Playgroud)
Sim*_*ias 74
该最安全的方式是依靠浏览器TextNode正确逃生的内容.这是一个例子:
function stripHTML(dirtyString) {
var container = document.createElement('div');
var text = document.createTextNode(dirtyString);
container.appendChild(text);
return container.innerHTML; // innerHTML will be a xss safe string
}
document.write( stripHTML('<p>some <span>content</span></p>') );
document.write( stripHTML('<script><p>some <span>content</span></p>') );Run Code Online (Sandbox Code Playgroud)
这里需要记住的是,当我们访问html字符串(innerHTML,outerHTML)时,浏览器会转义TextNodes的特殊字符.相比之下,访问文本值(innerText,textContent)将产生原始字符串,这意味着它们不安全并且可能包含XSS.
如果您使用jQuery,那么使用.text()是安全且向后兼容的.请参阅此问题的其他答案.
在最简单的方法在纯JavaScript,如果你与浏览器合作<= Internet Explorer 8的是:
string.replace(/(<([^>]+)>)/ig,"");
Run Code Online (Sandbox Code Playgroud)
但是使用正则表达式解析HTML存在一些问题,因此这不会提供非常好的安全性.此外,这只会处理HTML字符,因此它不是完全xss安全的.
| 归档时间: |
|
| 查看次数: |
107005 次 |
| 最近记录: |