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

时间:2011-04-08 23:54:44

标签: javascript jquery html strip-tags

这个函数有jQuery版本吗?

  

string strip_tags (string $ str [,   string $ 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>

9 个答案:

答案 0 :(得分: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);
});

Try it out here.

答案 1 :(得分:20)

删除所有可以使用的标签

$('<div>Content</div>').text()

答案 2 :(得分:12)

只需使用正则表达式:

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

完成。 :)

对于p标记:

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

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

答案 3 :(得分:5)

这对我有用:

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

答案 4 :(得分:4)

不是一个真正的答案,而是一个谨慎的话(取决于你试图用这个做什么):

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

为什么?

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

  1. 您的用户已启用JavaScript。如果您没有严格通过脚本提交表单(使用提交按钮等),它仍然允许用户提交无效数据(例如&lt; script&gt;标签等)
  2. 请求实际上可能根本不是由浏览器发起的,而是绕过任何基于JS的输入清理。
  3. 同样,并没有真正回答你的问题,而是根据你的问题根据你可能会前往的方向提出警告:)

答案 5 :(得分:3)

要删除所有代码,可以使用:

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

代码来自:Strip HTML Tags in JavaScript

答案 6 :(得分:1)

更新

使用以下内容删除标记,同时保留内容

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

这会剥离p标记,其中p是'#text'的子元素。

检查http://jsfiddle.net/YWCsH/

处的工作示例

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

Locutus.io function似乎是最佳解决方案:

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'