Lupinius: Switch ähnliche Lösung mit preg_match()

Salve

Ich möchte ein Skript schreiben, das einen String mit mehreren Regex... (was ist der Plural von Regex?) prüft. Damit daraus keine If elseif elseif elseif elseif elseif elseif elseif elseif etc. Verschachtelung wird wollte ich gerne Switch verwenden. Aber wie kann ich das machen, da immer ein anderer Regex geprüft wird?

Meine Idee ist eine Funktion zu schreiben, die auf die Regexen (oder wie auch immer) prüft und den passenden zurückgibt, sodass ich dann ein Skript mit switch(getFittingRegex()) machen könnte. Aber irgendwie glaube ich das ich es mir zu kompliziert mache. Gibt es eine einfachere/elegantere Lösung?

--
sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
  1. Hi,

    Ich möchte ein Skript schreiben, das einen String mit mehreren Regex... (was ist der Plural von Regex?)

    Reguläre Ausdrücke :-)

    prüft. Damit daraus keine If elseif elseif elseif elseif elseif elseif elseif elseif etc. Verschachtelung wird wollte ich gerne Switch verwenden. Aber wie kann ich das machen, da immer ein anderer Regex geprüft wird?

    Meine Idee ist eine Funktion zu schreiben, die auf die Regexen (oder wie auch immer) prüft und den passenden zurückgibt, sodass ich dann ein Skript mit switch(getFittingRegex()) machen könnte.

    Hä?

    Aber irgendwie glaube ich das ich es mir zu kompliziert mache.

    Schon möglich, aber das ist vielleicht leichter zu beurteilen ...

    Gibt es eine einfachere/elegantere Lösung?

    ... wenn du mal eine "einfachere", verständlichere Problembeschreibung lieferst.

    Ich kann mir gerade kaum vorstellen, was du *eigentlich* vorhast.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Salve

      Ok, neuer Versuch:

      Ich habe einen Text. Ich möchte mit Regulären Ausdrücken gucken, wie dieser Text lautet und je nach Übereinstimmung eine andere Aktion ausführen.
      Der ich für jede Möglichkeit auch einen anderen Regex testen muss, kommt eine switch-Anweisung nicht in Frage, und ich bin kein Freund von langen elseif Anweisungen.

      Wie kann ich das Problem ohne elseif lösen (garnicht ist auch eine Antwort).

      Ich dachte erst zu prüfen und dann je nach Ergebniss etwas zu machen, aber ich glaube ich denke (mal wieder) viel zu kompliziert...

      --
      sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
      1. Hi,

        Ich habe einen Text. Ich möchte mit Regulären Ausdrücken gucken, wie dieser Text lautet und je nach Übereinstimmung eine andere Aktion ausführen.
        Der ich für jede Möglichkeit auch einen anderen Regex testen muss, kommt eine switch-Anweisung nicht in Frage, und ich bin kein Freund von langen elseif Anweisungen.

        Du könntest die zu testenden Suchmuster in einem Array ablegen, und dieses in einer Schleife durchlaufen. Sobald du einen "Treffer" hast, kannst du aus der Schleife aussteigen, und anhand des aktuellen Zählerstandes entscheiden, welche Aktion auszuführen ist.

        Wie kann ich das Problem ohne elseif lösen (garnicht ist auch eine Antwort).

        Die Entscheidung, welche Aktion auszuführen ist, wird dann aber auch wieder auf etwas switch-artiges hinauslaufen - aber das ist dann an der Stelle ja nichts "schlimmes", sondern eben eine ganz normale Fallunterscheidung.

        (Man könnte es zwar ggf. auch über Callback-Funktionen machen, deren Namen man zusammen mit den Suchmustern im Array ablegt - aber ob sich der "Aufwand" lohnt, wäre erst mal fraglich.)

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. Hi there,

    [...](was ist der Plural von Regex?)

    Regeces, wenns nach klassischen lateinischen Regeln sein soll...

    1. Salve

      Nach einer Nacht schlafen über das Tgema ist meine Lösung Regex's, weil Regex ja eigentlich von regular expression(s) abstammt. Aber Regeces lässt sich besser sprechen ^^

      --
      sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
      1. Hi there,

        Nach einer Nacht schlafen über das Tgema ist meine Lösung Regex's, weil Regex ja eigentlich von regular expression(s) abstammt. Aber Regeces lässt sich besser sprechen ^^

        Vielleicht solltest Du ja noch eine Nacht darüber schlafen; Regex's ist in keinem Fall eine Lösung, weil 's im Deutschen aussliesslich im Genitiv für einen ausgelassenen Buchstaben verwendet werden darf. Oder, wie der große Komiker hier im Forum schreiben würde: Verwende *NIE* 's zur Bildung eines Plurals...

  3. echo $begrüßung;

    Damit daraus keine If elseif elseif elseif elseif elseif elseif elseif elseif etc. Verschachtelung wird wollte ich gerne Switch verwenden. Aber wie kann ich das machen, da immer ein anderer Regex geprüft wird?

    Man kann unter PHP switch auch umgekehrt verwenden.

    switch (true) {
        case ausdruck_der_boolean_ergibt:
          ...
        case ausdruck_der_boolean_ergibt:
          ...
      }

    Natürlich kann statt boolean auch ein anderer Typ verwendet werden. Der Ausdruck muss allerdings ein Ergebnis zurückliefern und nicht als Nebeneffekt erzeugen.

    echo "$verabschiedung $name";

    1. Salve
      Ich wusste es gibt eine elegante Lösung, Danke!

  4. was ist der Plural von Regex?

    Regechsen (verwand mit dem Valigator).

    Die Mehrzahl von Abkürzungen