Regular Expression

time-master

Erfahrenes Mitglied
Hallo..
Ich habe einen String, der z.B. so aussehen kann:

[PAGE]Test[/PAGE]

Nun brauche ich einen Regulären- Ausdruck der mir sowohl den Tag (PAGE), als auch das da zwischen (Test) zurück gibt! Mit diesem Ausdruck ("/(\[PAGE\](.*?)\[\/PAGE\])/is") würde es gehen, aber das ist nicht ganz das, was ich will! Und zwar ist der Tag nicht immer PAGE sondern kann jeder andere beliebige sein! D.h. ich brauche einen Ausdruck der in etwa so aussehen müsste:
"/(\[\\1\](.*?)\[\/\\1\])/is"
Dieser Funktioniert allerdings nicht.. Ich hoffe ihr könnt mir helfen!
 
Such doch mal hier im Forum nach "bbcode"! Da wirst du schnell fündig und es sollte genau das sein, was du brauchst.

greetz
daddz
 
/\[([^\]]*?)\](.*?)\[\/\\1\]/ vielleicht? Hab' ich jetzt aber nicht getestet...

uuups Klammer falsch gesetzt... updated

Naja.... oder besser:

/\[([^\]]+?)\](.*?)\[\/\\1\]/

du kannst aber auch die Syntax etwas einschränken mit:

/\[([a-z][a-z0-9]+?)\](.*?)\[\/\\1\]/i
 
Zuletzt bearbeitet:
@won_gak:
Bei deinem Ausdruck bekomme ich eine Warnung:
Warning: preg_match() [function.preg-match]: Compilation failed: missing ) at offset 24 in c:\Inetpub\wwwroot\phplib\RapidForm.cls.php on line 37
Ich denke das der Fehler aussagen soll, dass eine ")" fehlt! Ich wüsste aber nicht so diese hin kommen könnte!

@daddz:
Dein Ausdruck würde nicht beachten, dass der jeweilige Tag mit dem richtigen Tag geschlossen wird!
 
Zurück