jQuery(几乎)相当于PHP的strip_tags()

Ale*_*lex 32 html javascript jquery strip-tags

这个函数有jQuery版本吗?

string strip_tags(string $ str [,string $ allowable_tags])

从字符串中删除其中的所有标记和内容,但允许的标记字符串中定义的除外.

喜欢:

var stripped = strip_tags($('#text').html(), '<p><em><i><b><strong><code>');
Run Code Online (Sandbox Code Playgroud)

从:

<div id="text">
  <p> paragraph </p>
  <div> should be stripped </div>
</div>
Run Code Online (Sandbox Code Playgroud)

kar*_*m79 33

要删除标记,而不删除PHP的strip_tags()行为内容,您可以执行以下操作:

var whitelist = "p"; // for more tags use the multiple selector, e.g. "p, img"
$("#text *").not(whitelist).each(function() {
    var content = $(this).contents();
    $(this).replaceWith(content);
});
Run Code Online (Sandbox Code Playgroud)

在这里尝试一下.


tim*_*sly 23

要删除您可以使用的所有标记

$('<div>Content</div>').text()
Run Code Online (Sandbox Code Playgroud)

  • 所以`$('<p>'+ content +'</ p>').text();` (9认同)
  • XSS 警告:此方法还将解码实体,例如`Foo &lt;script&gt;alert('XSS')&lt;/script&gt; &lt;span&gt;Bar&lt;/span&gt;` 会变成 `Foo &lt;script&gt;alert('XSS')&lt;/script&gt; Bar`。PHP 的`strip_tags` 没有这样做。 (2认同)

red*_*ent 12

只需使用正则表达式:

html.replace( /<.*?>/g, '' );
Run Code Online (Sandbox Code Playgroud)

完成.:)

对于p标签:

html.replace( /<[^p].*?>/g, '' );
Run Code Online (Sandbox Code Playgroud)

对于其他标签,它变得更加复杂.


小智 7

即使这是一个旧线程,我认为它对于那些仍在寻找答案的人来说可能很有用。

Locutus.io 函数似乎是最好的解决方案:

function strip_tags (input, allowed) {
      allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
      var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi
      var commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
      return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
      })
}
Run Code Online (Sandbox Code Playgroud)

示例1:

strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>')
Run Code Online (Sandbox Code Playgroud)

返回 1:'Kevin <b>van</b> <i>Zonneveld</i>'

示例2:

strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>')
Run Code Online (Sandbox Code Playgroud)

返回 2:'<p>Kevin van Zonneveld</p>'

示例3:

strip_tags("<a href='http://kvz.io'>Kevin van Zonneveld</a>", "<a>")
Run Code Online (Sandbox Code Playgroud)

返回 3:"<a href='http://kvz.io'>Kevin van Zonneveld</a>"

示例4:

strip_tags('1 < 5 5 > 1')
Run Code Online (Sandbox Code Playgroud)

返回 4:'1 < 5 5 > 1'

实施例5:

strip_tags('1 <br/> 1')
Run Code Online (Sandbox Code Playgroud)

返回 5:'1 1'

实施例6:

strip_tags('1 <br/> 1', '<br>')
Run Code Online (Sandbox Code Playgroud)

返回 6:'1 <br/> 1'

实施例7:

strip_tags('1 <br/> 1', '<br><br/>')
Run Code Online (Sandbox Code Playgroud)

返回 7:'1 <br/> 1'


joa*_*16v 5

这对我有用:

function strip_tags(str) {
    str = str.toString();
    return str.replace(/<\/?[^>]+>/gi, '');
}
Run Code Online (Sandbox Code Playgroud)