36

这个函数有 jQuery 版本吗?

字符串strip_tags ( 字符串 $str [, 字符串 $allowable_tags ] )

从字符串中去除其中的所有标签和内容,除了允许的标签字符串中定义的标签和内容。

像:

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

从:

<div id="text">
  <p> paragraph </p>
  <div> should be stripped </div>
</div>
4

9 回答 9

36

要仅删除标签,而不是 content,这是 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);
});

在这里尝试一下。

于 2011-04-08T23:59:16.387 回答
27

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

$('<div>Content</div>').text()
于 2012-05-03T14:38:59.947 回答
13

只需使用正则表达式:

html.replace( /<.*?>/g, '' );

完毕。:)

对于p标签:

html.replace( /<[^p].*?>/g, '' );

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

于 2013-10-31T02:50:44.493 回答
10

这对我有用:

function strip_tags(str) {
    str = str.toString();
    return str.replace(/<\/?[^>]+>/gi, '');
}
于 2014-08-26T08:56:52.963 回答
4

不是一个实际的答案,而是一个警告(取决于你想用这个做什么):

恕我直言,在几乎所有情况下,输入清理都应该在服务器端完成(在这种情况下,使用原生 PHP 函数)。如果您的意图是用客户端功能替换PHP 功能,我强烈建议您不要这样做。

为什么?

仅仅因为您正在创作一个网站,并不意味着:

  1. 您的用户启用了 JavaScript。如果您没有严格通过脚本提交表单(使用提交按钮等),它仍然允许用户提交无效数据(例如 <script> 标签等)
  2. 请求实际上可能根本不是由浏览器发起的,从而绕过了任何基于 JS 的输入清理。

同样,不是真正回答您的问题,而是根据您的问题可能会出现的问题提出警告:)

于 2011-04-09T00:46:22.223 回答
4

要删除所有标签,可以使用:

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");

代码来自:在 JavaScript 中去除 HTML 标签

于 2017-01-16T18:58:50.853 回答
4

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

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 : ''
      })
}

示例 1:

strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>')

返回 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>')

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

示例 3:

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

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

示例 4:

strip_tags('1 < 5 5 > 1')

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

示例 5:

strip_tags('1 <br/> 1')

返回 5:'1 1'

示例 6:

strip_tags('1 <br/> 1', '<br>')

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

示例 7:

strip_tags('1 <br/> 1', '<br><br/>')

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

于 2017-09-29T07:16:45.017 回答
2

你可以试试这个,可能是最好的解决方案:http: //phpjs.org/functions/strip_tags/

于 2013-04-08T13:20:46.987 回答
1

更新

使用以下内容在保留内容的同时剥离标签

$('#text').find('p').contents().unwrap();

这将剥离p标签,其中p是“#text”的子元素。

在http://jsfiddle.net/YWCsH/检查工作示例

于 2011-04-09T00:04:38.123 回答