Hallo,
Ich will mit der Funktion preg_replace alle Gebilde, die so aussehen: [syn]Blablala[/syn], durch einen Leerstring ersetzen.
Dazu benutze ich dieses Suchmuster:
|[syn]\w\W[syn]|
Kann mir jemand sagen, wieso dieses Muster nicht funktioniert??
<?php $text = "Hier steht Text [syn]Bla Bla Bla[/syn] und hier noch mehr"; echo preg\_replace("/\[syn](.\*)\[\/syn\]/","",$text);
//Ausgabe Hier steht Text und hier noch mehr
?\>
Auf jeden Fall fehlte in deinem Beispiel der "/" im schließenden Tag ([/syn]). Zudem dürfte /w/W nicht so funktionieren, wie du dir das dachtest.
"\[syn](.\*)\[\/syn\]/siU" könnte ggf. noch besser funktionieren, weil es u. a. die Groß-/Kleinschreibung abschaltet.
Gruß, Matthias
Dazu benutze ich dieses Suchmuster:
|[syn]\w\W[syn]|
Dieses Muster matcht ja im Prinzip [syn]\w\W[syn], also [syn] gefolgt von genau einem word character (\w), gefolgt von genau einem non-word character (\W), gefolgt von [syn].
Damit das \w aber mehrere Buchstaben matcht, muss ein Quantor dahinter, was ueblicherweise * fuer „0 oder mehr“ bzw. + fuer „1 oder mehr“ ist.
Was du also vermutlich willst ist:
|[syn]\w+[syn]|