2012-12-17 14 views
26

mam ten kod:Usuń tagi HTML z ciągiem javascript

var content = "<p>Dear sms,</p><p>This is a test notification for push message from center II.</p>"; 

i chcę usunąć wszystkie <p> i </p> tagi z powyższego napisu. Po prostu chcę, aby wyświetlić wartości ciągów bez znaczników HTML, takich jak:

"Dear sms, This is a test notification for push message from center II." 
+0

Nie sądzę, że jest duplikatem. ponieważ jest również oznaczony w JavaScript. – SaidbakR

+0

Trzymam ten ciąg html w varibale javascript. Chcę usunąć te znaczniki z tej zmiennej. – krrr25

+0

Duplikat tego: http://stackoverflow.com/questions/822452/strip-html-od-text-javascript – Cerbrus

Odpowiedz

63

Dlaczego po prostu nie pozwolić jQuery to zrobić?

var content = "<p>Dear sms,</p><p>This is a test notification for push message from center II.</p>"; 

var text = $(content).text(); 
+0

to jest wielki, +1 – defau1t

+4

Należy pamiętać, że jeśli 'content' ma coś podobnego <div> stanie się znacznik po ten kod jest uruchamiany – cdmckay

+1

nie usunąć' ' –

4

Można użyć jQuery text() dostać zwykły tekst without tagów HTML.

Live Demo

withoutP = $(content).text() 
9

Korzystanie zwykły javascript:

content = content.replace(/(<p>|<\/p>)/g, ""); 
+0

Co z białymi znakami i/lub atrybutami? Na przykład '

' –

+1

Odpowiada dokładnie na pytanie OP, ale jeśli znaczniki mają atrybuty, regex musiałby być '/ () *> | <\/p>)/g' – HBP

+0

Tutaj zmienna wydaje się być generowany i myślę, że łatwo jest wiedzieć, które elementy musimy usunąć ... Nawet jeśli jest nieco bardziej skomplikowany, myślę, że ta metoda zadziała: jest to podstawa na zadane pytanie i może być łatwo dostosować po. –

1
var content = "a<br />"; 
var withoutP = $(content).text() 
alert(withoutP) 

Ten jeden nie działa na rozwiązanie .text().

24

Oto moje rozwiązanie,

function removeTags(){ 
    var txt = document.getElementById('myString').value; 
    var rex = /(<([^>]+)>)/ig; 
    alert(txt.replace(rex , "")); 

} 
+3

dzięki człowiekiem, to jest najlepsza odpowiedź, ponieważ jego czystego javascript a regexp obsługuje wszystkie znaczniki HTML – jipipayo

+0

poprawa do tego regex byłoby: (<([^>] +)>) | (< ([^>] +) >) Spowoduje to usunięcie standardowych znaczników html, a także wszelkich tagów z hasłami. – dukedevil294

+0

Proszę nie przetwarzać HTML za pomocą wyrażeń regularnych. Jest to błąd i prawdopodobnie za to źle się poparzysz. HTML nie jest zwykłym językiem, a wyrażenie regularne, nawet o długości tysięcy znaków, nie jest wystarczające. Potrzebujesz prawdziwego parsera lub korzystasz z funkcji przeglądarki/DOM. Ja jako osoba atakująca może łatwo uzyskać HTML obok obu tych przykładów. – AndrewF

0

Place hidden element w znacznikach lub utwórz go z jQuery. Użyj tego kodu, aby uzyskać zwykły tekst bez komplikacji z niekompletnymi tagów &lt; itp

content = $(hiddenElement).html($(hiddenElement).html(content).text()).text(); 
0

Przede approch nie pracuje dla mnie. Więc mam jedno alternatywne rozwiązanie, aby rozwiązać ten issue`

var regex = "/<(.|\n)*?>/"; 
var originaltext = "1. Males and females were compared in terms of time management ability. <br><br>The independent variables were the people in the study.<br><br> Is this statement correct"; 
var resultText = body.replace(regex, ""); 
console.log(result); 
0

użyć wyrażenia regularnego:

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

-3
function htmlTagremove(text) { 

    var cont = document.createElement('div'), 
    cont.innerHTML=text; 

    return $(cont).text(); 

} 

htmlTagremove('<p><html>test'); 
1

ten sprawdza znaków specjalnych

var $string = '&lt;a href=&quot;link&quot;&gt;aaa&lt;/a&gt;'; 
 
var $string2 = '<a href="link">aaa</a>'; 
 
var $string3 = 'BBBBB'; 
 
var $string4 = 'partial<script'; 
 
var $string5 = 'has spaces'; 
 

 
function StripTags(string) { 
 

 
    var decoded_string = $("<div/>").html(string).text(); 
 
    return $("<div/>").html(decoded_string).text(); 
 

 
} 
 

 
console.log(StripTags($string)); 
 
console.log(StripTags($string2)); 
 
console.log(StripTags($string3)); 
 
console.log(StripTags($string4)); 
 
console.log(StripTags($string5));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>