Tjabo Kloppenburg: preg_match, runde Klammern finden.

Ich steh irgendwie auf dem Schlauch.

Ich habe einen Text wie "Bla fasel Optionen (1) und nochwas Optionen.", und will per
preg_match das "Optionen (1)" finden.

Lustigerweise steht der Suchbegriff in einer Variablen $suchbegriff.

Wie müsste ich nun preg_match aufrufen, um in $matches[0] den Text "Optionen (1)" vorzufinden?

Für jede Hilfe dankbar,
  tk.

PS: Das wurmt mich, ich code schon seit Jahren in diversen Sprachen. Aber irgendwie klappts nicht... :-)

  1. Ich habe einen Text wie "Bla fasel Optionen (1) und nochwas Optionen.", und will per
    preg_match das "Optionen (1)" finden.

    Wie müsste ich nun preg_match aufrufen, um in $matches[0] den Text "Optionen (1)" vorzufinden?

    Setze im Suchbegriff vor alle Sonderzeichen einen Rückstrich (); in Deinem Fall muß also ( durch ( und ) durch ) ersetzt werden. str_replace() hilft Dir dabei.

    Gruß,
      soenk.e

    1. hi,

      Setze im Suchbegriff vor alle Sonderzeichen einen Rückstrich (); in Deinem Fall muß also ( durch ( und ) durch ) ersetzt werden. str_replace() hilft Dir dabei.

      soweit war ich auch schon. Das klappt mit allen Satzzeichen -- nur nicht mit den runden Klammern.

      tk.

      1. Setze im Suchbegriff vor alle Sonderzeichen einen Rückstrich (); in Deinem Fall muß also ( durch ( und ) durch ) ersetzt werden. str_replace() hilft Dir dabei.

        soweit war ich auch schon.

        Das kann niemand wissen, wenn Du es nicht verrätst.

        Das klappt mit allen Satzzeichen -- nur nicht mit den runden Klammern.

        Aha? Hier geht's wunderbar:

        $suche=str_replace(Array("(",")"),Array("\(","\)"),"Optionen (1)");
          preg_match("/".$suche."/","Bla fasel Optionen (1) und nochwas Optionen 1.",$treffer);
          print_r($treffer);

        ergibt

        Array
          (
              [0] => Optionen (1)
          )

        Gruß,
          soenk.e

        1. Aha? Hier geht's wunderbar:

          ist PHP schuld oder ich? :-)
          Hab den Fehler schließlich gefunden, eigentlich waren es zwei:

          • ich habe ein globale Variable (hash) in einer function als
            global deklariert (und mich dabei vertippt)
          • und dann vergessen die zu benutzen :-(

          Ich hätts früher gefunden, wenn PHP Vertipper in Variablennamen
          melden würde.
          Mal sehen, inwieweit man PHP da verschärfen kann...

          danke,
          tk.

          1. Ich hätts früher gefunden, wenn PHP Vertipper in Variablennamen
            melden würde.
            Mal sehen, inwieweit man PHP da verschärfen kann...

            Nur über das Ausgeben von Hinweisen, wenn aus nicht initialisierten Variablen gelesen wird (Einstellung error_reporting). Daß man andersrum in Variablen ohne vorherige Deklaration reinschreiben kann, ist schließlich ein Feature, kein Bug :)

            Gruß,
              soenk.e

    2. hi,

      Setze im Suchbegriff vor alle Sonderzeichen einen Rückstrich (); in Deinem Fall muß also ( durch ( und ) durch ) ersetzt werden. str_replace() hilft Dir dabei.

      Hier ein Beispiel mit Source:

      http://tapo.backbutton.de/s1.php