[php] Überprüfen, ob Tags wieder geschlossen wurden

  • #1
C

Cledith

Bekanntes Mitglied
Themenersteller
Dabei seit
04.11.2001
Beiträge
1.210
Reaktionspunkte
0
Sagt mal Mädels und Jugens,
angenommen ich habe einen String
Code:
$text = <strong>Hallo</strong> Wie geht es <i>dir?

Vielleicht sieht man das Problem schon. Das <i> wurde nicht wieder geschlossen, was ja nun fatale konsequenzen haben kann.

Daher formuliert sich meine Frage wie folgend:
Wie kann ich überprüfen, ob ein Anwender ein Tag wieder geschlossen hat (bzw. alle Tags wieder geschlossen hat)? Mir mangelt es an Ideen. Das Problem liegt im Moment jedoch noch nicht bei der Umsetzung, sondern überhaupt erstmal beim Konzept.

Für Hilfe wäre ich dankbar!
 
  • #2
Wie wäre es mit einem Stack?
Solange öffnende Tags gefunden werden => lege Tag auf den Stack
Wird ein schliessender Tag gefunden, vergleiche diesen mit dem letzten öffnenden Tag auf dem Stack
Passen die Tags zusammen, nimm den Tag vom Stack, ansonsten Fehler
Wenn keine schliessenden Tags mehr vorhanden und Stack nicht leer, dann fehlt eben was ;)
Nachteil bei dieser Version, Tags, die über Kreuz schliessen, werden nicht erkannt. Ist IMHO aber auch kein sauberer Programmierstil.

Eddie
 
  • #3
Zu aller Ehrlichkeit muss ich zugeben, dass ich nicht ein Wort verstanden habe :(

Hm, ok, das hört sich so an, als ob das klappen kann.
Und wie geht das??? ;D

Eben habe ich noch was zum Thema gefunden, auf das ich ja nun dann eigentlich hin will:
Eine (die aber auch nicht richtig funktioniert) von zum BB Code (wenn auch nicht dafür, aber das Prinzip möchte ich benutzen), nur muss ich auch dazu gestehen, dass ich doch eher wenig davon verstehe...

Also habe ich gerade beschlossen, dass ich das mal eben verwerfen werde und erstmal langsam einsteigen werde ;D

Hast du denn nen paar Links für mich, in denen man langsam daran herangeführt wird?
Also z.B. an Programmierung mit Klassen, Stacks, OOP und so weiter in PHP?
 
  • #4
Hi

Also unser Informatikdozent würde jetzt sagen, dass ist eine kontextfreie Sprache ;D.

Vorgehensweise:
Du brauchst quasi eine Zählvariable die die Position im String angibt.
< gefunden und kein / danach, solange vorgehen bis > kommt
array[] = substr(pos1, pos2)
if (< gefunden und kein / danach, solange vorgehen bis > kommt) {
array[] = substr(pos1, pos2)
// auf stack legen
} else if (array_pop() == substr(pos1, pos2) {
// von stack nehmen
} else {
echo fehler beim parsen
}

Gruß, Michael
 
  • #5
'tschuldige die späte Antwort, bin vorher nicht zu gekommen.
Das Prinzip habe ich verstanden.

Aber hat evtl. doch noch mal jemand nen paar Links für mich, in denen man langsam an Programmierung mit Klassenund OOP und so weiter in PHP herangeführt wird?
 
  • #7
Wunderbar. Danke.
 
Thema:

[php] Überprüfen, ob Tags wieder geschlossen wurden

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben