web-dev-qa-db-ja.com

PHP strip_tags()と同等のjQuery(ほぼ)

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

コンテンツではなくタグのみ(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);
});

ここで試してみてください。

33
karim79

すべてのタグを削除するには、使用できます

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

正規表現を使用するだけです:

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

できた:)

pタグの場合:

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

他のタグの場合、より複雑になります。

12
redolent

これは私のために働いた:

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

実際の答えではなく、注意の言葉(これで何をしようとしているかによる):

私見、ほとんどallの場合、入力サニタイズはサーバー側で実行する必要があります(この場合、ネイティブPHP関数)を使用します。 replace PHPクライアント側の機能を備えた機能、私は強くアドバイスします。

どうして?

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

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

繰り返しますが、あなたの質問に実際に答えているわけではありませんが、あなたの質問に基づいてどこに向かっている可能性があるかに基づいた注意の言葉:)

4
Demian Brecht

すべてのタグを削除するには、次を使用できます。

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

コード: JavaScriptのHTMLタグを削除

3
Allan Andrade

更新

以下を使用して、コンテンツを保持しながらタグを削除します

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

これはpタグを削除します。pは '#text'の子要素です。

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

1
Hussein

これが古いスレッドであっても、まだ答えを探している人には役立つと思います。

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'

1
Dario Corbelli

これを試すことができます。おそらく最良の解決策です。 http://phpjs.org/functions/strip_tags/

1
Oleg Popov