2011-07-27 14 views
5

Chcę usunąć znaczniki z html, ale zachowuje podział wiersza.Usuwaj znaczniki za pomocą javascript i obsługuj podziały wierszy.

Chcę zachowanie takie jak kopiowanie tekstu w przeglądarce i wklejanie go w notatniku.

Na przykład, kod, który przelicza:

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

Usuwanie wszystkich tagów nie działa (/ <. *?>/G). Również tworzenie obojętnego elementu < div> i ustawień jego innertHTML i odczytanie, że to textContent spowoduje usunięcie podziałów linii.

Jakaś pomoc?

Odpowiedz

2

Spróbuj:

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>'; 

To będzie rozebrać tagi i zastąpić <br /> lub <br> z nowych linii, ale dodanie nowych linii dla elementów blokowych wymaga trochę czasu, aby wymyślić rozwiązanie.

Here is a demo

3

Jaka jest ta praca dla Ciebie? To zastąpi każde wystąpienie <br>, </div> i </p> z \n, a następnie usunie pozostałe tagi. Jest głupkowaty, ale przynajmniej na początek.

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

Nie działa to jednak dla wszystkich HTML. Tylko te tagi, o których wspomniałeś.

+0

div, p i br to tylko przykłady wielu znaczników, które powoduje podział wiersza (HR, li, tr, ...) –

Powiązane problemy