36

この関数の 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>
4

9 に答える 9

36

PHP の動作であるcontent ではなく、タグだけを削除するには、次の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

実際の答えではありませんが、注意が必要です(これで何をしようとしているかによって異なります)。

IMHOは、ほとんどすべての場合、入力のサニタイズをサーバー側で実行する必要があります(この場合、ネイティブPHP関数を使用します)。PHPの機能をクライアント側の機能に置き換えることを意図している場合は、それを強くお勧めします。

なんで?

あなたがウェブサイトを作成しているからといって、それはそれを意味するものではありません:

  1. ユーザーはJavaScriptを有効にしています。スクリプトを使用して(送信ボタンなどを使用して)フォームを厳密に送信しない場合でも、ユーザーは無効なデータ(<script>タグなど)を送信できます。
  2. リクエストは実際にはブラウザによって開始されない可能性があり、JSベースの入力サニタイズを回避します。

繰り返しになりますが、実際にはあなたの質問に答えるのではなく、あなたの質問に基づいてどこに向かう可能性があるかに基づいて注意が必要です:)

于 2011-04-09T00:46:22.223 に答える
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();

これにより、「#text」の子要素である pタグが削除されます。p

http://jsfiddle.net/YWCsH/で動作例を確認してください

于 2011-04-09T00:04:38.123 に答える