Hallo Achim,
/[([bi]):(.*?[^\])]/
Das kann aber nicht funktionieren.
Es kann :)
In PHP zumindest scheint der zweite Slash bei [^\] die
eckige Klammer zu quoten. Fehler: missing terminating ]
for character class at offset 20
Da bist du dem typischen PHP-Programmierer-Fehler
aufgesessen. Du uebergibst der RegEx-Engine einen String,
also musst du escapen:
preg_replace("/\[([bi]):(.*?[^\\])\]/",....);
Vorhin hatte ich das schon mit drei Slashes. Das geht
schonmal, aber dann habe ich im Text immer noch die "]"
übrig. Ich könnte noch eine Substitution machen und alle
"]" in ] umsetzen.
Dafuer gibt es den e-Flag. Du musst halt den String, den du
im Ersetzungsteil bekommst, per str_replace() oder so
saeubern, z. B. so:
preg_replace("/\[([bi]):(.*?[^\\])\]/e","str_replace($1,'\]',']');",$txt);
kann sein, dass du das $1 noch in '' schreiben musst.
Gruesse,
CK