Expertenwissen
Von: , 29.05.2010 12:10 Uhr

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??

Danke!
LG
froechrissi

5 Antworten zu dieser Frage
  1. Antwort von nach 11 Minuten 0 hilfreich
    Re: Wieso funktioniert dieses Suchmuster nicht??
    Hallo,

    versuch es doch mal so:


    $var1 = preg_replace('/\[syn\](.*?)\[\/syn\]/is', '', $var1);


    Viele Grüße
    Croydon
  2. Antwort von nach 57 Minuten 0 hilfreich
    Re: Wieso funktioniert dieses Suchmuster nicht??
    Hallo,

    probiers mal so:

    <?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
  3. Antwort von nach 2 Stunden 2 hilfreich
    Re: Wieso funktioniert dieses Suchmuster nicht??
    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\]|
    • Antwort von nach 6 Stunden 0 hilfreich
      Re^2: Wieso funktioniert dieses Suchmuster nicht??
      Danke dir für deine Antwort, sie hat mir sehr geholfen!!
  4. Antwort von nach 11 Stunden 0 hilfreich
    Re: Wieso funktioniert dieses Suchmuster nicht??
    Hi,

    1. nimm die | weg
    2. fehlt ein ein schließendes / vor dem syn
    3. \w bzw. \W gibt nur ein Zeichen an, schau mal hier: http://www.php.net/manual/de/regexp.reference.backsl...

    so ist es richtig: \[syn\]([\w\W]*)\[/syn\]

    Grüße,

    misi
    Jetzt auf diese Frage antworten!