Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] [RegExp] Thema BBCode und XHTML 1.1

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] [RegExp] Thema BBCode und XHTML 1.1

    Hallo,

    ich denke mir diese Frage gehört eher ins Fortgeschrittenen Forum, bei Bedarf verschieben

    Mein Problem: Ich entwickler für das Browsergame, das ich mitentwickel und Leite (HackerGame.de), ein Forum.

    Das Forum basiert auf XHTML 1.1. Ebenfalls kommt meine Parserklasse für den BBCode zum Einsatz, jedoch kommt dabei ein Problem auf. Der Parser macht aus einem [b]-Tag ein [b]-Tag, was eigentlich richtig ist, aber da ein User nicht unbedingt die Vorgaben von XHTML beachtet... Sprich, die Tags müssen in der richtigen Reihenfolge beendet werden.

    Meine Idee das überprüfen zu lassen.

    Den ganzen Text mit RegExp und dem Modifier s als einen String durch den Parser jagen. Der sucht sich dann den innersten Teil heraus.

    Code:
    text
    Hier werden die [u ]-Tags herrausgefiltert.

    Nun wird überprüft ob sich innerhalb des [u ]-Tags noch weitere Tags befinden, allerdings nur solche, die auch innerhalb des [u ]-Tags beendet werden.

    Sollte nun ein Tag sich öffnen, aber nicht innerhalb des Teilstrings (umschlossen vom [u ]-Tag) schließen, werden die eckigen Klammern durch die HTML Codes für [ und ] ersetzt.

    Code:
    Text
    Hierbei werden erst die B-Tags rausgefiltert. Dann werden die I-Tags rausgefiltert. Nun merkt der Parser, das der U-Tag alleine steht, da der schließende Tag nicht innerhalb des Teilstrings ist. Nun wird der I-Tag durch den HTML Code ersetzt.

    Meine Frage ist, wie müsste da die Abfrage heißen. Ich habe den Thread absichtlich nicht im Gesuche Forum untergebracht, da ich kein fertiges Skript haben möchte sondern nur den Weg dahin. Von der Überlegung her sollte es gehen, nur der "Wie?"-Weg liegt noch im Dunkeln.

    Danke und mit freundlichen Grüßen
    dtdesign

  • #2
    a) sollten da schon die bbcodes in der richtigen reihenfolge stehen
    ( solltest du es nicht mit absicht gemacht haben um dem parsen der codes aus dem weg zu gehen )

    b ) searcharray erstellen
    b ) replacearray erstellen

    dann kein preg_replace ... sondern eher ein preg_match
    -> gefundene öffnende codes ( nicht aufeinanderfolgend )
    -> gefundene schliessende codes ( nicht aufeinanderfolgend )
    können replaced werden

    wichtiger aufeinanderfolgende, da [b ][u ]xxx[/u ][/b ]
    nicht zu <u>xxx</u> werden sondern zu
    <span style="font-weight:bold;text-decoration:underline">xxx</span>

    also search [b] if follow by (\[)(url|b|u|i) ... usw...
    wird ein heiden schreib/parse aufwand sollte als denkanstoss hoffentlich helfen
    wobei das nicht der Weisheit letzter Schluss ist ( vermute ich )

    mfg

    Kommentar


    • #3
      zu a) Beim 2. Beispiel war das Absicht um die überlegte Wirkungsweise zu schildern.
      zu b) sowas hatte ich mir gedacht, Danke für deine Hilfe

      Gruß
      dtdesign

      Kommentar

      Lädt...
      X