php funktion zum url prüfen

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

  • php funktion zum url prüfen

    Hallo!
    Gibt es eigentlich eine php funktion mit der man eine Url auf ihre gültigkeit überprüfen kann, oder muss ich mir dafür eine Klasse schreiben?

    Ich habe nur parse_url gefunden, allerdings ist diese funktion ja nicht dazu gedacht die url zu validieren.

  • #2
    Hi,

    klar gibts: preg_match + Klick mich
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Hallo!
      Ja, preg_match kenne ich natürlich auch ;-). Genauer gesagt will ich eigendlich überprüfen ob ein Link ordnungsgemäß eingegeben wurde. Soweit wäre das ja auch kein Problem, wenn ich genau wissen würde welche Zeichen in einer Url nicht vorkommen dürfen. Ich hab auch schon gesucht, aber noch keine Seriösen Quellen gefunden. Ein Link kann ja hinter einem # Zeichen so gut wie alle Zeichen enthalten, außer ein Leerzeichen und ü,ö,ä,.

      Kommentar


      • #4
        es gibt ein entsprechendes RFC irgendwo hier http://www.ietf.org/rfc.html

        nur ... die meisten Programmierer hindert so ein RFC absolut nicht daran, trotzdem irgendwelche Zeichen in die URL zu packen, natürlich unkodiert ... wir haben das auf einer Website so gelöst, dass wir von http:// praktisch fast alles erlauben und das letzte Zeichen darf dann kein Satzzeichen sein, damit fahren wir recht gut _-_

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

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

        Kommentar


        • #5
          Tja, dann werde ich es wohl doch mit einer regexp versuchen.
          Allerdings hab ich da ein kleines problem.
          Mein Script müsste mir eigentlich false zurückgeben, da ich nach dem www. ein Leerzeichen habe. Allerdings macht es das nicht, und ich weis nicht wieso.

          PHP-Code:
          <?php
          $url 
          "HTTP://www.sd.at/fasdf";

          if(
          strtolower(substr($url,0,6)) =="ftp://")
          {
              
          $muster ="";
          }
          if(
          strtolower(substr($url,0,7)) == "http://")
          {
              
          $muster "!^(http://)(www\.)?([a-z0-9-]{3,})\.\w{2,4}(/)?!i";
              echo 
          "test2";
              
              
          #|([a-z-]+\.[a-z-]{3,})
          }
          else 
          {
              
          $url "http://".$url;
              echo 
          "test3";
          }
          #$muster = "!^(http://|ftp://)(www\.)?(([a-z@-]{3,})|([a-z]))\.\w{2,4}/?!i";
          echo preg_match($muster,$url);
          echo 
          $url;
          ?>
          Zuletzt geändert von nobody2; 31.08.2006, 20:37.

          Kommentar


          • #6
            in dem regex fehlt das abschließende $, damit der ganze string matchen muss.

            außerdem fehlen noch einige zeichen (nur buchstaben)?
            dann, was ist mit groß/kleinschreibung? www ist nicht zwingend notwendig usw...

            Kommentar


            • #7
              Hallo die Regexp jetzt erweitert!
              Ich habe kein $ Zeichen, da er mir auch nur den Anfang matchen soll.
              Welche Zeichen fehlen noch? Es sind doch nur Wortzeichen erlaubt und der - und das @ falls eine ftp Adresse angegeben ist. Groß und Kleinschreibung werden doch beachtet a-zA-Z und das ? hinter (www\.) bewirkt doch, dass das www optional ist ;-) .

              Gibt es eigendlich eine Möglichkeit, dass ich ihm folgenden sagen kann.
              Z.B nach .com kommt entweder ein / oder gar nichts und falls der / vorhanden ist, so kann dahinter jedes Zeichen folgen.

              Kommentar


              • #8
                >Ich habe kein $ Zeichen, da er mir auch nur den Anfang matchen soll.
                dann darfst du dich aber auch nicht wundern, das preg_match 1 zurückliefert. das $ muss mit rein.

                >Welche Zeichen fehlen noch? Es sind doch nur Wortzeichen erlaubt und der - und das @ falls eine ftp Adresse angegeben ist.
                na z.b. "." "/", "_" ...


                >Groß und Kleinschreibung werden doch beachtet a-zA-Z und das ? hinter (www\.) bewirkt doch, dass das www optional ist ;-) .
                was ist mit HTTP und WWW? mit dem zweiten hast du recht

                Kommentar


                • #9
                  Hi,

                  öhm hast du dir mal meinen link angeguckt ?
                  (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                  Kommentar


                  • #10
                    Wieso muss das $ mit rein? Ich will ja nicht die komplette url checken.
                    z.B.: http:://www.google.at/dasteht_etwas+#.egalwas
                    da will ich nur dass am Anfang, also bis zum /daste.... checken . nach dem / kann ja so gut wie jedes Zeichen vorkommen.

                    P.S: Ich habe mich jetzt entschieden den code anders aufzubauen (ftp und html getrennt zu behandeln)

                    Das aktuelle Suchmuster ist dort wo echo "test2"; ausgegeben wird.
                    Irgendwie checkt er das nicht dass www.sd.at eine ungültige url ist, da sd ja nur 2 Buchstaben sind. entferne ich das www. , dann checkt er das schon.
                    Zuletzt geändert von nobody2; 31.08.2006, 20:43.

                    Kommentar


                    • #11
                      Original geschrieben von nobody2
                      Wieso muss das $ mit rein? Ich will ja nicht die komplette url checken.
                      toll, wenn du jetzt jedesmal den quelltext änderst - meine antwort bezog sich auf deinen ursprungsregex und dort war das genau der fehler:
                      Mein Script müsste mir eigentlich false zurückgeben, da ich nach dem www. ein Leerzeichen habe.

                      Kommentar


                      • #12
                        Original geschrieben von closure
                        Hi,

                        öhm hast du dir mal meinen link angeguckt ?
                        Ja, aber falls das Suchmuster sein sollte, so funtioniert das bei nicht wirklich. Unknown modifier '|' in...

                        Kommentar


                        • #13
                          nur mal als anregung ....
                          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

                          Lädt...
                          X