Обрезать теги с помощью JavaScript и обрабатывать разрывы строк - PullRequest
5 голосов
/ 27 июля 2011

Я хочу убрать теги из 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>x2 до x1\nx2

Удаление всех тегов не работает (/<.*?>/g).Также создание фиктивного

и параметров его innertHTML и чтение его textContent удалит разрывы строк.

Любая помощь?

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Как это работает для вас? Это заменит каждое вхождение <br>, </div> и </p> на \n, а затем удалит оставшиеся теги. Это глупо, но это, по крайней мере, начало.

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

Однако это не работает для всего HTML. Только теги, которые вы упомянули.

2 голосов
/ 27 июля 2011

Попробуйте:

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> новыми строками, но для добавления новых строк для блочных элементов требуется некоторое время, чтобы найти решение.

Вот демоверсия

...