5

HTMLからタグを削除したいのですが、改行は保持しています。

ブラウザでテキストをコピーしてメモ帳に貼り付けるような動作が必要です。

たとえば、以下を変換するコード:

  • <div>x1</div><div>x2</div>x1\nx2
  • <p>x1</p><p>x2</p>x1\nx2
  • <b>x1</b><i>x2</i>x1x2
  • x1<br>x2x1\nx2

すべてのタグを削除しても機能しません (/<.*?>/g)。また、ダミーの <div> を作成し、それを設定してinnertHTML読み取ると、textContent改行が削除されます。

ヘルプはありますか?

4

2 に答える 2

3

これはあなたにとってどのように機能しますか?これにより、出現するすべての<br></div>、および</p>がに置き換えられ\n、残りのタグが削除されます。間抜けですが、少なくとも最初の一歩です。

fixed = text_to_fix.replace(/<(?:br|\/div|\/p)>/g, "\n")
           .replace(/<.*?>/g, "");

ただし、これはすべての HTML で機能するわけではありません。あなたが言及したタグだけ。

于 2011-07-27T16:36:49.577 に答える
2

試す:

function strip_tags(str){
    return str
             .replace(/(<(br[^>]*)>)/ig, '\n')
             .replace(/(<([^>]+)>)/ig,'');
}

var str = '<div>x1</div><div>x2</div><br>'+'<p>x1</p><p>x2</p>'+'<b>x1</b><i>x2</i>';

これにより、タグが削除され、<br />または<br>新しい行に置き換えられますが、ブロック要素に新しい行を追加するには、解決策を見つけるのにかなりの時間がかかります.

ここにデモがあります

于 2011-07-27T16:51:16.917 に答える