2011-01-12 2 views
0

Ich versuche, Tags aus Zeichenfolge zu löschen:Crop ersten und letzten Tag mit Javascript, wenn sie das gleiche Tag ist

"<p>string</p>" must be converted to "string" 

I-Lösung einfach gefunden für erste und letzte Stellen oder alle Zuschneiden und dann

"<p>string1</p><p>string2</p>" converts to "string1</p><p>string2" 

ich möchte Zeichenfolge überprüfen, so etwas wie

"IF last </p> tag is closing tag for first <p> tag THEN crop" 

Ist dies möglich mit Regex zu tun? Wenn nein, ich denke, Formel muss etwas wie sein: <p> tags equals 1, </p> equals -1. Ich fange an, diese Zahlen vom Ende der Zeichenfolge zu summieren und zu stoppen, wenn Summe gleich Null ist. Wenn Punkt, wo ich stoppe, ist das Ende der Zeichenfolge, dann ist es ein Tag und ich muss es zuschneiden. Ansonsten sind es andere Tags. Aber ich weiß nicht, wie man es programmiert, bitte helfen.

+0

Hallo @Ink und herzlich willkommen auf der Website. Leider ist das, was du fragst, eine unserer beliebtesten Fragen. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags ... leider ist es die Natur dieser Seite, doppelte Fragen zu schließen, die wirklich von beantwortet werden können andere reifere Fragen sind voll mit Antworten, aber die beste Antwort, die du bekommen wirst, ist "nutze eine Bibliothek". In diesem Fall würde ich jQuery empfehlen. Es wird tun, was Sie in vielerlei Hinsicht wollen, zum Beispiel http://api.jquery.com/unwrap/ – jcolebrand

+0

Danke, ich werde versuchen, eine Überprüfung und Ersatzfunktion mit jQuery zu machen. – ink

Antwort

0

Ich denke, ich machte diese Aufgabe zu kompliziert. Ich habe vergessen, dass <p> Tag nicht in einem anderen <p> sein kann. Und dann kann ich einfach nicht überprüfen

if ($("#my_div>p").length == 1) { 
    // crop surrounding <p> 
} 

Vielen Dank für Ihre Antworten und traurig über dumme Frage, ich brauche nur mehr schlafen.

0

Ich weiß, @drachenstern hat diesen Kommentar gepostet, der ziemlich viel auf Ihre Frage aber immer noch antwortet. Sie können eine ziemlich einfache Regex neben der replace() Funktion verwenden. Diese kleine Funktion sollte den Zweck erfüllen.

function stripTags(str) { 
    return str.replace(/<[^<]+?>/g, ''); 
} 
+0

Ich muss nicht alle Tags entfernen, nur eins und nur wenn erste und letzte Tags Teile eines Tags öffnen und schließen. – ink