[Funktion] preg_match

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] preg_match

    Hallo!

    Ich habe immer einen Query-String, welche wie folgt aussieht:

    Modul=forum&ThreadID=xxx
    oder:
    Modul=forum&ForumID=xxx

    Wie kann ich dort nun das ThreadID oder das ForumID rausholen? Da kann übrigens mehreres stehen, aber immer mit ID am ende.
    Habe es mit preg_match nicht hinbekommen.
    Zuletzt geändert von Deathrow; 01.11.2006, 22:29.
    Mit freundlichem Gruß,
    Deathrow

  • #2
    Junge junge.

    Lang genug dabei um zu wissen, dass du uns deine Ansätze nennen sollst, oder?

    Dass die Regex 1000 mal interessanter ist, als die Funktion, dürfte wohl klar sein. ein preg_match('',$str); ergibt bei mir auch nichts.

    Kommentar


    • #3
      "/^\?.*(.+ID)=([^&]+)/" könnte ein Anfang sein ...
      Kannst es aber auch ganz banal lösen:
      PHP-Code:
      foreach ($_GET as $name => $value) {
          if (
      substr($name, -2) == 'ID') {
              
      $matches[$name] = $value;
          }
      }
      var_dump($matches); 
      Allerdings scheint dein Ansatz nicht das Gelbe vom Ei zu sein, wenn du nicht mal weißt, welche Parameter zu erwarten sind!

      Kommentar


      • #4
        ich würd's mal mit parse_str probieren, könnte einfacher sein.
        Kissolino.com

        Kommentar


        • #5
          @TobiaZ: Tut mir ja leid, aber so gut kann ich halt nicht PHP und ich mache es auch nicht oft. Sorry, das ich hier um Hilfe frage^^

          @Wurzel: Ich möchte ja rausfinden, was im den String steht, ob ForumID, ThreadID, oder so... also halt an der Stelle...

          @onemorened: Is etwa geht es, aber nicht ganz...

          PHP-Code:
          <?php
          $return 
          preg_match ("/^\?(.*)(.+ID)=([^&]+)/""?".$_SERVER['QUERY_STRING'], $output);
          print_r ($output);
          ?>
          Da kommt raus:
          Array ( [0] => ?Modul=forum&ForumID=3 [1] => Modul=forum&Foru [2] => mID [3] => 3 )

          wenn ich es so mache:
          PHP-Code:
          <?php
          $return 
          preg_match ("/^\?(.*)(.+ID)=([^&]+)/"$_SERVER['QUERY_STRING'], $output);
          print_r ($output);
          ?>
          Kommt dann raus:
          Array ( )

          Also das erste ist schon gut, aber warum holt der mir da mID raus, und nicht ForumID bzw. Forum?
          Mit freundlichem Gruß,
          Deathrow

          Kommentar


          • #6
            Original geschrieben von Deathrow
            @Wurzel: Ich möchte ja rausfinden, was im den String steht, ob ForumID, ThreadID, oder so... also halt an der Stelle...
            Das kannst du mit parse_str doch auch erreichen.

            Du lässt dir das Array erstellen, und schaust dir dann die Keys an.
            Und wenn die Position sogar immer identisch ist, dann findest du den Wert auch immer an der selben Stelle. (Du bekommst zwar kein nummerisch indiziertes Array, aber mittels array_keys wäre ja auch das kein Problem.)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Wozu $_SERVER['QUERY_STRING'] mit parse_str() in ein Array zerlegen? Da kommt doch auch nur $_GET heraus.

              Kommentar


              • #8
                Original geschrieben von onemorenerd
                Wozu $_SERVER['QUERY_STRING'] mit parse_str() in ein Array zerlegen?
                Ich interpretier(t)e die Fragestellung derart, dass er etwas query-string-artiges vorliegen hat - aber das es nicht der Querystring der aktuellen Anfrage ist.

                In letzterem Falle hättest du recht, dann wär's wirklich reichlich witzlos.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Vieleicht kapier ich da was nicht ganz... aber warum benutzt du nicht einfach $_GET?

                  Kommentar


                  • #10
                    Original geschrieben von jmc
                    Vieleicht kapier ich da was nicht ganz... aber warum benutzt du nicht einfach $_GET?
                    Weil:
                    Ich rausfinden möchte, welche Variable übergeben wurde. Dies kann IrgendwasID sein, z.B. ForumID oder ThreadID - Verstehste?

                    Ich habe es jetzt so gelöst:
                    PHP-Code:
                    <?php
                    parse_str
                    ($_SERVER['QUERY_STRING'], $output);
                    $output array_keys($output);
                    if (
                    preg_match("/(Thread|Forum)ID$/"$output[1])) echo 'Zeige zu: '.substr($output[1], 0, -2);
                    ?>
                    Mit freundlichem Gruß,
                    Deathrow

                    Kommentar


                    • #11
                      Hi,

                      Tja, und genau das hättest Du Dir sparen können, indem Du die Parameternamen mit array_keys($_GET)
                      bestimmst. Antworten richtig lesen soll helfen.
                      Und mit preg_match auf 2 bestimmte Werte zu prüfen, ist übrigens mit Kanonen auf Spatzen schiessen.

                      LG

                      Kommentar


                      • #12
                        Original geschrieben von kuddeldaddeldu
                        Antworten richtig lesen soll helfen.
                        Dein Wort in Gottes Ohr. Ich habe oben eine kurze foreach-Schleife gepostet, die offenbar auch geflissentlich übersehen wurde. Kinder, was mach ich mir überhaupt die Mühe ...

                        Kommentar


                        • #13
                          Original geschrieben von onemorenerd
                          Kinder, was mach ich mir überhaupt die Mühe ...
                          Du bist hoffnungsloser idealist und glaubst an das gute im menschen
                          und gehst abends gern mit dem guten gefühl ins bett jemandem geholfen
                          zu haben (auch wenn die manchmal die hilfe gar nicht wollen).

                          greets
                          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                          Kommentar

                          Lädt...
                          X