0

<img>データベースから返された文字列からタグとその内容を取り除きたいと思います。

文字列の例

//I want to retrive dummy texts from my string.
var string = "<img src='test.jpg'/>dummy texts <img src='text.jpg'/> dummby text dummy texts";

私が試してみました

if (string.indexOf('<img') != -1) {
    var newString = $(string).filter(function() {
        return this.tagName != 'img';
    }).text();
}

ただし、私のDBにはくだらないデータがあり、時々返されます

//There is no closure for image tag. 
var string = "<img src='test.jpg'/>dummy texts <img src='text.jpg'/> dummby text dummy texts";

私のコードは文字列全体を削除します。

イメージタグの位置が異なります。

<img>タグを効率的に削除するにはどうすればよいですか?

4

4 に答える 4

2
var str  = "<img src='test.jpg'>dummy texts <img src='text.jpg'>",
    text = ​$('<div />').append(str).remove('img').text();

フィドル

于 2012-12-07T00:49:46.427 に答える
1

正解は、HTML を regex で解析しないことです。適切な XML パーサーを使用する必要があります。幸いなことに、ブラウザは 1 つです。jQuery のドキュメント フラグメントを使用してみることができます。

function stripImages(markup) {
  var fragment = $("<body></body>").html(markup);
  fragment.find("img").remove();
  return fragment.html();
}

var s = "<img src='test.jpg'/>dummy texts <img src='text.jpg'/> dummby text dummy texts"
stripImages(s);

これにより、ドキュメント フラグメントが作成され、画像タグが取り除かれ、サニタイズされた HTML が返されます。

于 2012-12-07T00:44:03.660 に答える
1

私にとってうまくいったのは、次のようにオンザフライで作成できるDOM要素で文字列をラップすることです。

var el = $('<div>');
el.html("<img src='test.jpg'>dummy texts <img src='text.jpg'> dummby text dummy texts");
el.find('img').remove();
console.log(el.html());

次に、特定の要素(画像など)を検索して削除するだけです

于 2012-12-07T00:52:43.307 に答える
1

最初に追加せずに行うこともできます。

var str = "<img src='test.jpg'/>dummy texts <img src='text.jpg'/> dummby text dummy texts";
str = str.replace(/<img[^>]+>/g, '');
于 2012-12-07T01:16:17.313 に答える