Reg Ex für IP Adresse

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

  • Reg Ex für IP Adresse

    Ich will überprüfen ob in einer Variablen eine IP Adresse steckt oder nicht.
    Da ich in Reg Ex ne Niete bin haut des net so richtig hin. Die Variable selber enthält entweder einen Hostname oder eine IP und ich will rausbekommen was jetzt IP und was Hostname ist.

    preg_match("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", $hostname)

    Fehermeldung: Unknown modifier '{' in ...

    Mfg Markus

  • #2
    mache vor und hinter dein pattern mal noch je ein ! rein..
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      AH OK, Danke
      doch noch ein Problem:
      PHP-Code:
      $hostname "186.28.138.21A2";
      if (
      preg_match("![0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}!"$hostname))
      {
          echo 
      "sieht wie eine IP-Adresse aus";
      }
      else
      {
          echo 
      "keine IP";

      Ausgabe: "sieht wie eine IP-Adresse aus"

      Problem tritt blos bei letzer Zahl auf.
      Wäre ja verständlich wenn des A erst an 4ter Stelle kommen würde aber so ist's ja falsch

      Wenns so aussieht
      161.2541.128.1 bekomm ich die richtige Fehlermeldung


      Mfg Markus
      Zuletzt geändert von markusschmitt; 14.08.2003, 12:47.

      Kommentar


      • #4
        hmm, eigentlich benutzt man entweder /Ausdruck/ oder |Ausdruck| als Limiter. Ausrufungszeichen ist mir neu. Wahrscheinlich kommt deshalb immer dasselbe Ergebnis.

        Kommentar


        • #5
          Auch so
          $hostname = "186.28.133.ABC";
          if (preg_match("|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|", $hostname))

          bekomm ich eine positive Ausgabe

          Kommentar


          • #6
            Original geschrieben von BrainBug
            Ausrufungszeichen ist mir neu.
            welches zeichen man nimmt spielt keine rolle. es muss nur immer das gleiche an anfang und ende sein. und fall der delimiter im suchstring vorkommt, muss er escaped werden.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              $hostname = "186.28.133.1AA"; // sieht wie eine IP-Adresse aus
              $hostname = "186.28.133.1A2"; // sieht wie eine IP-Adresse aus
              $hostname = "186.28.133.A12"; // keine IP

              anscheinend wird nur das erste Zeichen akzeptiert.

              Mfg Markus

              Kommentar


              • #8
                was passiert bei:

                - 123.123.123.123
                - 123.acb.123.123
                - 123.a23.123.123

                was passiert mit diesem pattern?

                !^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$!
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  der Pattern funktioniert doch -> wenn beim letzten Trippel mindestens eine Zahl vorkommt, ist doch der Pattern erfüllt. Dass danach ein Zeichen kommt, macht dem Pattern ja nix. Das müßte dann negiert werden, also das kein Zeichen vorkommen darf bzw. wie Abraxax schon vorschlägt am Anfang ^ und am Ende würde ich noch $ anfügen, d.h. der komplette String muss zutreffen und nicht der kleinste mögliche Teil davon.

                  P.S.: dass mit dem Delimiter wusste ich nicht. Cool, habe mich auch schon gewundert, dass da mal / und dann mal | benutzt wird, aber nie nachgeschaut, warum. Danke für die Info.

                  Kommentar


                  • #10
                    - 123.123.123.123 //klappt
                    - 123.acb.123.123 //klappt nicht
                    - 123.a23.123.123 //klappt nicht

                    mit dem anderen Pattern klappt alles,
                    (muss mich mal ganz ordentlich mit Reg Ex beschäftigen, damit's auch die dummen kapieren)

                    Danke für die Hilfe

                    Mfg Markus

                    Kommentar


                    • #11
                      sorry Abraxax, hatte dein $ am Ende des Pattern nicht gesehen.

                      Kommentar


                      • #12
                        Original geschrieben von BrainBug
                        sorry Abraxax, hatte dein $ am Ende des Pattern nicht gesehen.
                        k.p.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          mh... zahlen zwischen 0 und 9 ?! [0-9]

                          geht folgende IP. 999.999.999.999
                          oder sonst irgendwas ungültiges ?

                          gruss

                          Kommentar


                          • #14
                            haste ne bessere idee?

                            [0-3] ist ja sinnlos....

                            ich habe hier im forum aber auch mal eine korrekte prüfung gesehen. weiss nur nicht mehr wo. im zweifelsfall bei den code-schnipsel mal suchen.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Ist net so wild ob da auch 999.999.999.999 gewertet wir. Ist relativ egal.
                              Bekomm die Daten aus ner DB und um den hostnamen kürzer darzustellen explode ich den mit ".". Dies hat mir allerdings auch die IP abgeschnitten darum wollt ich vorher geschwind prüfen ob es eine IP ist oder ein hostname. Jetzt klappt auch folgendes:

                              Ursprung:
                              al-capone.frankfurt.karl-heinz-rechner.de
                              172.158.2.222

                              Früher:
                              al-capone
                              172

                              Jetzt:
                              al-capone
                              172.158.2.222


                              Also Ziel erfüllt

                              Mfg Markus

                              Kommentar

                              Lädt...
                              X