LastBoyScout: Suchmuster für preg_match

Hallo miteinander,

Ich komme mittlerweile zwar schon recht gut mit PHP zurecht, aber bei den Suchmustern, hab ich noch immer so meine Probleme.
Das sieht für mich alles immer etwas Kryptisch aus und ich weis meistens nicht genau, für was die einzelnen Zeichen nun genau stehen.

Nun zu meinen Problem:
Ich führe im Content aus einer Datenbank eine Suche nach einem Code für eine Ersetzung durch.

Gesucht wird z.B. nach: {blog,100,rss}

Gelöst habe ich das bis dato folgendermaßen:
preg_match_all("/{((news|blog|list|menu),?[0-9]*,(rss))}/i"

Das funktioniert zwar, ist aber nun nicht sonderlich elegant und schon gar nicht flexibel für eventuelle zukünftige Änderungen und Erweiterungen.

preg_match soll den String hier nur heraus filtern, die Teilung anhand des Komma und die Prüfung auf die Schlüsselwörter erfolgt im weiteren Scriptverlauf.

Wie kann ich das etwas besser lösen?
Bitte mit Erläuterungen, damit ich das langsam mal kapiere.

Gruß
LastBoyScout

  1. Hi,

    Gesucht wird z.B. nach: {blog,100,rss}

    Gelöst habe ich das bis dato folgendermaßen:
    preg_match_all("/{((news|blog|list|menu),?[0-9]*,(rss))}/i"

    danach sucht das Muster aber nicht wirklich, sondern nach:
    »{« irgendwo im String
    gefolgt von »news«, »blog«, »list« oder »menu«
    optional (?) gefolgt von »,«
    optional (* = 0 bis beliebig oft) gefolgt von beliebigen Ziffern ([0-9])
    gefolgt von »,«
    gefolgt von »rss}«
    das Ganze über den Modifikator »i« unabhängig von Gross-/Kleinschreibung.

    Die meisten Klammern sind überflüssig, da Du die gefundenen Strings ja ohnehin nicht berücksichtigst.

    freundliche Grüße
    Ingo

    1. Hi,

      Gesucht wird z.B. nach: {blog,100,rss}

      Gelöst habe ich das bis dato folgendermaßen:
      preg_match_all("/{((news|blog|list|menu),?[0-9]*,(rss))}/i"
      danach sucht das Muster aber nicht wirklich, sondern nach:
      »{« irgendwo im String
      gefolgt von »news«, »blog«, »list« oder »menu«
      optional (?) gefolgt von »,«
      optional (* = 0 bis beliebig oft) gefolgt von beliebigen Ziffern ([0-9])
      gefolgt von »,«
      gefolgt von »rss}«
      das Ganze über den Modifikator »i« unabhängig von Gross-/Kleinschreibung.

      Die meisten Klammern sind überflüssig, da Du die gefundenen Strings ja ohnehin nicht berücksichtigst.

      freundliche Grüße
      Ingo

      Hallo Ingo,

      Danke für deine Erläuterungen.
      Meinst du in etwa so:
      preg_match_all("/{(news|blog|list|menu,?[0-9]*,?rss)}/i"...

      Gibt es den irgendwo eine gute und leicht zu verstehende kleine Doku zu den Suchmustern?
      Hab bei G leider nicht verständliches gefunden.

      1. Hi,

        Meinst du in etwa so:
        preg_match_all("/{(news|blog|list|menu,?[0-9]*,?rss)}/i"...

        kommt drauf an, was genau alles gefunden werrden soll...

        Gibt es den irgendwo eine gute und leicht zu verstehende kleine Doku zu den Suchmustern?

        ich finde den Kurs bei den Regenechsen sehr hilreich.

        freundliche Grüße
        Ingo