Stab: preg_match problem

Nabend, mal ne frage zu folgendem Code:

<?php

$search = "Hallo du da im Radio 43920 Gugglehupf";

$preg = preg_match("/[1]{5}$/", $search);

if($preg) { echo "jo"; } else { echo "no";}

//Wieso funktioniert das nicht ?
  //und wie gebe ich das dann aus ? eigentlich doch mit $preg[1] oder ?

?>

Wieso gibt der mir nix aus, wenn ich echo $preg[1]; mache ?

Kann mir jmd sagen, wi mein denkfehler liegt ?

Und mir ein paar andere bsp. vll geben  ?

mfg
Frank


  1. 0-9 ↩︎

  1. $search = "Hallo du da im Radio 43920 Gugglehupf";
      $preg = preg_match("/[1]{5}$/", $search);

    Wieso funktioniert das nicht ?

    Es funktioniert, aber es funktioniert nicht so, wie Du vielleicht möchtest, weil Du nach einem Text suchst, der zwischen Anfang (^) und Ende ($) nur fünf Zahlen enthält. Bei Dir steht da noch ein bisschen mehr.

    Wieso gibt der mir nix aus, wenn ich echo $preg[1]; mache ?

    Du möchtest nochmal in die Anleitungsseite zu preg_match() blicken und dort erkennen, was die Funktion zurück gibt und wo sie optional die gefundenen Ergebnisse ablädt.


    1. 0-9 ↩︎

    1. ok, hab mein fehler gefunden ;)
      das Zirkumflex und das Dollarzeichen waren im weg *g*

      na ok, vielen dank

      mfg
      Stab

      1. <?php

        $search = "guckuck du da http://www.google.de/ das will ich nicht mehr";

        preg_match("/w{3}.(.*)/", $search, $preg);

        if($preg) { echo "jo"; } else { echo "no";}

        echo '<pre>';

        var_dump($preg);

        echo '</pre>';

        ?>

        Möchte jetzt nur gerne "http://www.google.de/" aber nicht mehr das dahinter haben ;)
        das mit http davor bekomm ich noch hin, aber weis net, wie ich ihm sagen kann, das danach schluss sein soll, also der rest nicht mehr da ist

        1. Hi,

          $search = "guckuck du da http://www.google.de/ das will ich nicht mehr";

          preg_match("/w{3}.(.*)/", $search, $preg);
          [...]
          Möchte jetzt nur gerne "http://www.google.de/" aber nicht mehr das dahinter haben ;)

          bisher liest sich dein Ausdruck so:

          suche www (w{3}) gefolgt von irgendeinem Zeichen (.) und liefer' mir den kompletten Rest ((.*)).

          Für dein Vorhaben möchtest du aber nicht den kompletten Rest, sondern alle Zeichen ungleich einem Space (Newline ist evtl. auch noch auszuschließen.), denn URIs beinhalten auf keinen Fall ein Leerzeichen. Du musst also (.*) durch eine Zeichenklasse ersetzen, in der du die nicht erwünschten Zeichen ausschließt ([^\s]+ z.B., dann würde er beim ersten Space abbrechen).

          Siehe auch http://www.dclp-faq.de/q/q-regexp-uri-klickbar.html, dort ist ein fertiger Ausdruck zu finden.

          Gruß,
          Andreas.

    2. Du möchtest nochmal in die Anleitungsseite zu preg_match() blicken

      Wir befinden uns hier übrigens in einem Hypertextnetzwerk.
      http://de3.php.net/manual/en/function.preg-match.php