Hallo dedlfix,
Die BBCode-Parser-Klassen gibt es ja nicht umsonst. Vielleicht ist es möglich, mit einem recht komplizierten Regulären Ausdruck bestimmte oder alle Fehlersituationen zu erkennen, aber was dann? RegExp sind ein mächtiges Werkzeug, aber irgendwo haben sie auch ihre (zumindest praktischen) Grenzen.
So ist es. Mit *einem* regulären Ausdruck kann man m.E. falsche Verschachtelungen nicht erkennen, geschweige denn reparieren. Ich hatte das Problem einmal mit normalen HTML-tags. Habe es dann wie beschrieben gelöst, d.h. eigentlich nicht wirklich gelöst, weil es schlicht unmöglich ist.
Wenn es möglich wäre, gäbe es keine Compiler-Fehlermeldungen mehr wegen fascher Klammerung, fehlenden Semikolons z.B. in javascript usw. Man kann Fehler erkennen, so wie von mir beschrieben, aber es ist nicht möglich, sie in jedem Fall zuverlässig automatisch zu reparieren.
Nehmen wir einem einfachen Fall wie:
[b]Das [i]ist [/b]ein [/i]Text.
Woher sollte ein Programm nun wissen, ob eigentlich
[b]Das [i]ist [/i]ein [/b]Text.
oder vielmehr
[i]Das [b]ist [/b]ein [/i]Text.
gemeint war?
Auszeichnungssprachen sind dazu gemacht, von Maschinen geschrieben und gelesen zu werden. Wenn ein Mensch das Zeug von Hand notiert und dabei Fehler macht, ist jede Maschine überfordert.
Gruß, Don P