Regex-Frage für Host!

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

  • Regex-Frage für Host!

    Hallo,

    irgendwie haut mein regulärer Ausdruck nicht hin.
    Es soll Host mit Port (Host:8080) gefunden werden, wie es bei Proxys üblich ist.

    PHP-Code:
    $str 'Das ist ein Host mx.domain.com:80 der gefunden werden soll';
    preg_match_all('#[a-z0-9-_.]{2,}\.[a-z]{2,4}:[0-9]{1,5}#i',$str,$erg);
    print_f($erg); 
    allerdings bekomm auch ein match wenn der host so lautet : mx.domain.com:8sad0 - was ja falsch wäre.

    hier bekomm ich das ergebnis mx.domain.com:8, ob wohl der host ja falsch ist.

    kann jemand den bitte korrigieren???

    danke!

  • #2
    worked as designed
    PHP-Code:
    [0-9]{1,5
    warum 1-5 ziffern? warum nicht direkt 8080? und setzt ein $ ans ende. so in der art
    PHP-Code:
    preg_match_all('#[a-z0-9-_.]{2,}.[a-z]{2,4}:[0-9]{4}$#i',$str,$erg);
    preg_match_all('#[a-z0-9-_.]{2,}.[a-z]{2,4}:8080$#i',$str,$erg); 
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      danke,

      aber der Port kann ein wert bis 65535 (5 Ziffern) haben

      und das $ bedeutet ja am ende. was ist aber wenn der host mitten in einem text ist, dann wird er ja nicht gefunden!

      ?

      Kommentar


      • #4
        ggf. auf leerzeichen hinter dem port prüfen. ansonsten sieht es schlecht aus.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          na aber das muss doch irgendwie gehen!

          wenn ich möchte das er "mx.domain.de:8080" finden soll
          und im Text aber mx.domain.de:80blabla80 steht, dann darf er mir keine Treffer zurückgeben- auch kein mx.domain.de:80

          ?

          Kommentar


          • #6
            deswegen sollst du ja auch noch auf ein leerzeichen hinter dem port suchen.

            PHP-Code:
            preg_match_all('#[a-z0-9-_.]{2,}.[a-z]{2,4}:[0-9]{1,5}[:space:]{1}#i',$str,$erg); 
            ungetestet.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              hilft auch nicht. aber ob ein leerzeichen danach folgt ist doch egal, oder?

              denn wenn der host so lautet "mx.dom*~^°ain.de:8080" findet der "ain.de:8080" er soll an der stelle aber nix finden.
              ?

              Kommentar


              • #8
                D.h. davor muss entweder Anfang/Ende vom String sein, oder ein Leerzeichen. Also setz das doch so um, z.B. mit Assertions

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  | für logisches OR

                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar

                  Lädt...
                  X