Frage von perhp, 45

String überprüfen ob alle tags geschlossen wurden?

Hallo Ich habe einen Text, wo die Tags mit abgeschnitten werden. Nun möchte ich aber, dass es mir trotzdem die Formatierung behält, auch wenn ich den Text kürze. Wie kann ich nun erkennen, ob einige Tags nicht geschlossen wurden und die soll es dann am Ende des Strings schließen.

Antwort
von triopasi, 28

Klassischer Fall von Daten Parsen :) Schöner Ansatz wäre ein Algorithmus, der alle öffnenden Tags in einen Stack schreibt und wenn der schließende Tag nicht das top Element ist einen Fehler ausgibt bzw. den dann halt einfügt.

Kommentar von perhp ,

Ich habe zwar schon eine Lösung gefunden, die ist aber meiner Meinung nach nicht wirklich schön. Ich wrappe dort den gecroppten Text in ein div, dann schließt es mir das Topelement automatisch.

Antwort
von safur, 29

Ich weiß nicht ob ich dich richtig verstehe.

Du checkst halt die Existenz von </ ab. Genauer gesagt prüfst du halt ob da <home> und </home> da ist.

In Javascript gibt es da indexOf(String) dafür.

Kommentar von perhp ,

Mal abgesehen, dass home kein gültiger HTML-Tag ist, wird mir indexOf nicht viel weiterhelfen, da ich ja nicht weiß, welche Tags enthalten sein können. Ich habe zwar eine Lösung, die ist aber nicht wirklich schön.

Am liebsten würde ich das mit match und anschließend Regex Befehl machen oder so ungefähr.

Kommentar von safur ,

Dann erklär das mal genauer!

Ist:

Soll:

Zeig den String auf.

Kommentar von perhp ,

Also eine Ausgabe kann so ausschauen:

<div>Lorem Ipsum <p>Lorem Ipsum</p> Test <p>Lorem...

und das Result sollte dann aber so ausschauen:

<div>Lorem Ipsum <p>Lorem Ipsum</p> Test <p>Lorem...</p></div>

Man könnte glaube ich auch das ganze so lösen, dass man alle Tags in einem Array hineinschreibt (also jedes einzelne Tag getrennt) und anschließend /2 macht und wenn es ungerade ist, wird am Ende noch die fehlenden Tags hinzugeschrieben.

Keine passende Antwort gefunden?

Fragen Sie die Community