[RegExp] BBCode - [code]-Blöcke

Hallo HaBo'ler!

Für verschiedene Projekte benötige ich BBCodes, und schreibe daher immer wieder meine Klasse "bbcodeforxhtml" weiter. Nun habe ich ein Problem und benötige eure Hilfe.

Ich habe seit neuestem für erhöhte Lesbarkeit in einem Forum ein "Text-Cleaning" eingebaut, d.h. ich möchte Plenken und mehrfache Ausrufezeichen etc, autom. entfernen. Nun sollen [code]-Blöcke davon unbetroffen sein. Mir will es aber nicht gelingen, einen entsprechenden RegExp zu schreiben.

Mein Ansatz #(?<!\[code\](?!\[/code\])) ([^ ]+) ([!?,.:;])# funktioniert erstens nicht, zweitens würde er bei verschiedenen Code-Blöcken Anfangen zu spinnen.

Wäre Toll, wenn mir jemand helfen könnte. Den ganzen aktuellen Quellcode der Klasse gibt es unter http://code.google.com/p/bbcodeforxhtml/source/browse/trunk/bbcode.php?r=15

Raphael
 
Das funktioniert nicht mit Regulären Ausdrücken. Du musst dir einen Parser schreiben, der deinen Text durchgeht um nur den Bereich zwischen den Code-Blöcken durch deinen Cleaning-Filter zu schicken.

Du könntest ungefähr so vorgehen:
1. Ersten (Nächsten) Close-Tag finden (Wenn keine Close-Tags mehr da sind: Abbruch)
2. Nächsten Open-Tag finden
3. Text dazwischen durch "gecleanten" Text ersetzen
4. Bei 1 weitermachen

Mfg Eydeet
 
Der Bereich IN den Code-Blöcken soll NICHT gefiltert werden, aber ich denke, da hast du dich einfach vertippt. Aber so werde ich das angehen. Danke.
 
Zurück
Oben