Fabienne: URL/Domain mit RegExp überprüfen

Ich hab gerade versucht einen URL auf Korrektheit zu überprüfen und bin gescheitert:

Ich möchte mit RegExp eine Domain abfragen, un zwar so, dass man nicht nur "bblablabla.de" reinschreiben kann. Meine Vorstellung war so, dass ich zuerst checke, ob "http://" zu Beginn steht. Wenn nicht, dann soll es dazu geschrieben werden. Anschließend darf eine unbestimmte Anzahl an Subdomains bestehend aus A-Z,0-9,_-, wobei die erste Subdomain und die Domain selbst nicht mit - oder _ beginnen dürfen. Danach soll aus nem array (gefüllt mit sämtlichen TLD's) gechekct werden, ob die TLD korrekt ist.
Bis dahin ging's noch....

Nun soll dem Nutzer noch die möglichkeit gegeben werden, einen / gefolgt von Beliebig vielen Verzeichnissen (A-Z 0-9 -_) und optional einer Datei mit Endung aus nem array (html,htm,php,php3,php4,asp)

Falls jemand ne Idee hat, oder schon mal so was gescriptet hat, wäre schön, wenn derjenige das hier posten würde!!

Danke schon im Voraus!!!

  1. Hallo,

    Ich hab gerade versucht einen URL auf Korrektheit zu überprüfen und bin gescheitert:

    Ich denke, es waere sinnvoller, zu pruefen, ob die URL _existiert_.
    dclp-FAQ: Wie überprüfe ich Hyperlinks auf ihre Gültigkeit?
    http://www.dclp-faq.de/q/q-code-links-testen.html

    Gruesse,

    Thomas

    1. Hallo Thomas,

      ich hab das ausprobiert, bekomme aber weder true, noch false noch sonst irgendwas zurück. Ich erhalte array in array in array verschachtelt.

      Der Ansatz gefällt mir aber sehr gut. Vielleicht hast nen Code zur Hand, mit dem ich auf einfach Art und Weise die URL checken kann?

      Check den Code mal und sag, was daran falsch ist! Oder hab ich was nicht kapiert?? Was soll "HTTP status code" ausgeben?

      http://froemter.de/php/phpLinkCheck.phps

      DANKE

      1. Hallo,

        ich hab das ausprobiert, bekomme aber weder true, noch false noch sonst irgendwas zurück. Ich erhalte array in array in array verschachtelt.

        Naja, soo schlimm ist es nicht.

        Der Ansatz gefällt mir aber sehr gut. Vielleicht hast nen Code zur Hand, mit dem ich auf einfach Art und Weise die URL checken kann?

        Ich verwende den von Johannes Froemter
         http://froemter.de/php/phpLinkCheck.phps

        Check den Code mal und sag, was daran falsch ist! Oder hab ich was nicht kapiert?? Was soll "HTTP status code" ausgeben?

        Na, HTTP Status Codes eben:-)
        Im Erfolgsfall: 200
        Seite nicht vorhanden: 404
        Umleitung: 30x
        u.s.w., siehe RFC 2616:
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

        Das einzige Problem ist, wenn der Server gar nicht exisitert
        bzw. nicht erreichbar ist. Dann kommt es zum Timeout.

        Vereinfacht gesagt:

        $fp = fsockopen($url["host"], $url["port"], &$errno, &$errstr, 30);

        if (!$fp)
          /* Server nicht erreichbar bzw. inexistent */
        else
          {
           /* ... */

        if ($http["Status-Code"]=="200")
            /* Link OK */
          else
            /* irgendein Problem*/
          }

        Mit anderen Worten: Nur, wenn der HTTP-Status-Code 200 ist,
        ist der Link wirklich problemlos erreichbar und gueltig.

        Die 300er sollte man ueberpruefen bzw. aktualisieren.

        Gruesse,

        Thomas