Weini: URL parsen

Abend!
Wenn ich die URL http://www.test.de/ parsen möchte, wie schaffe ich es denn dass nur test.de ohne www ausgegeben wird?
Hab nichts gefunden.
Gruss

  1. Hallo Weini!

    Wenn ich die URL http://www.test.de/ parsen möchte, wie schaffe ich es denn dass nur test.de ohne www ausgegeben wird?

    Indem Du Dich ein wenig mit regulären Ausdrücken befaßt? Siehe auch PHP Manual: XCIX. Regular Expression Functions (Perl-Compatible).
    Ansonsten könnte noch dclp FAQ: 8.12. Wie mache ich aus URIs im Text anklickbare Links? und dclp FAQ: 7.3. Wie zerlege ich eine URL? interessant für Dich sein.
    Und aus dem Tipps&Tricks-Beitrag Programmiertechnik: Prüfung von E-Mail-Syntax über reguläre Ausdrücke von Christian Kruse kannst Du Dir raussuchen, wie Du eine URL auf formale Korrektheit überprüfen kannst (mußt es halt ein wenig anpassen).

    MfG
    Götz

    --
    Losung für Sonntag, 28. November 2004
    Die Israeliten sprachen zum Herrn: Wir haben gesündigt, mache du es mit uns, wie dir's gefällt; nur errette uns heute! (Richter 10,15)
    Der Engel sprach zu Maria: Siehe, du wirst schwanger werden und einen Sohn gebären, und du sollst ihm den Namen Jesus geben. Der wird groß sein und Sohn des Höchsten genannt werden; und Gott der Herr wird ihm den Thron seines Vaters David geben. (Lukas 1,30-32)
    (Losungslink)
    1. Hey!

      Damit komme ich nicht ganz klar.
      Ich kenne nur $url= parse_url("$url"); echo $url["host"];.
      Aber das zeigt ja mit www an.
      Gibt es nicht so einen einfachen Befehl der die URL ohne www anzeigt?

      1. Hallo Weini!

        Gibt es nicht so einen einfachen Befehl der die URL ohne www anzeigt?

        Ich schrieb es bereits: Befasse Dich mit Regulären Ausdrücken.
        Damit sollte es relativ einfach gehen.
        Zur Not kannst Du sogar mit ner einfachen Stringersetzung drüber gehen (da könnte halt evtl. auch mal was zuviel ersetzt werden, je nachdem was man wie ersetzen läßt).

        MfG
        Götz

        --
        Losung für Sonntag, 28. November 2004
        Die Israeliten sprachen zum Herrn: Wir haben gesündigt, mache du es mit uns, wie dir's gefällt; nur errette uns heute! (Richter 10,15)
        Der Engel sprach zu Maria: Siehe, du wirst schwanger werden und einen Sohn gebären, und du sollst ihm den Namen Jesus geben. Der wird groß sein und Sohn des Höchsten genannt werden; und Gott der Herr wird ihm den Thron seines Vaters David geben. (Lukas 1,30-32)
        (Losungslink)
        1. Hallo, Weini,

          Zitat:

          mixed str_replace ( mixed search, mixed replace, mixed subject)

          Diese Funktion ersetzt alle Vorkommen von search innerhalb der Zeichenkette subject durch den String replace. Falls Sie keine ausgefallenen String-Ersetzungen brauchen, sollten Sie immer dieser Funktion den Vorzug vor ereg_replace() oder preg_replace() geben.

          Quelle: http://de2.php.net/str_replace

          Beispiel für Dich (ungetestet) ...

          $myurl = str_replace('http://','',$myurl);
          $myurl = str_replace('www.','',$myurl);

          Grüße,

          Sebastian

          1. Hallo Sebastian!

            Beispiel für Dich (ungetestet) ...
            $myurl = str_replace('http://','',$myurl);
            $myurl = str_replace('www.','',$myurl);

            Genau das meinte ich mit "es könnte ja zuviel ersetzt werden".
            Deinen Code muß ich nicht testen sondern nur scharf anschauen um festzustellen, daß er relativ nutzlos ist.
            Außer URLs verstümmeln kann er nämlich nichts.
            Was würde denn aus http://blablubwww.de werden?

            MfG
            Götz

            --
            Losung für Montag, 29. November 2004
            Das soll mein Ruhm und meine Wonne, mein Preis und meine Ehre sein unter allen Völkern auf Erden, wenn sie all das Gute hören, das ich Jerusalem tue. (Jeremia 33,9)
            Der Seher Johannes schreibt: Der Engel zeigte mir die heilige Stadt Jerusalem herniederkommen aus dem Himmel von Gott, die hatte die Herrlichkeit Gottes. (Offenbarung 21,10-11)
            (Losungslink)
            1. Hallo, Götz,

              Beispiel für Dich (ungetestet) ...
              $myurl = str_replace('http://','',$myurl);
              $myurl = str_replace('www.','',$myurl);

              » Genau das meinte ich mit "es könnte ja zuviel ersetzt werden".
              » Deinen Code muß ich nicht testen sondern nur scharf anschauen
              » um festzustellen, daß er relativ nutzlos ist.
              » Außer URLs verstümmeln kann er nämlich nichts.
              » Was würde denn aus http://blablubwww.de werden?

              Schlaumeier! Dein konstruierter Fall existiert auch nur in der Theorie und lässt sich zudem ganz leicht berücksichtigen ...

              $myurl = str_replace('http://www.','',$myurl);
              $myurl = str_replace('http://','',$myurl);

              Voila! Noch irgendwelche Einwände? In 99 % der Fälle sollte dies ausreichen. Und jetzt entfernen wir auch noch den Slash am Ende ...

              if(strrpos($myurl,'/')==strlen($myurl)-1) {
              $myurl = substr($myurl,0,strlen($myurl)-1);
              }

              Funktioniert! Und wer möchte kann ja gerne stattdessen eine RegEx-Orgie starten, viel Spaß ...

              Grüße,

              Sebastian

              1. Hallo Sebastian!

                Schlaumeier! Dein konstruierter Fall existiert auch nur in der Theorie und lässt sich zudem ganz leicht berücksichtigen ...

                Aber hallo!
                Dann nimm doch http://www.de und werde glücklich mit Deinem Code.

                Voila! Noch irgendwelche Einwände? In 99 % der Fälle sollte dies ausreichen. Und jetzt entfernen wir auch noch den Slash am Ende ...

                Das kommt eben drauf an, was Du mit den Adressen noch vorhast.
                Und prüfen, ob eine Adresse überhaupt gültig sein kann solltest Du vorher trotzdem, deswegen würde ich die Prüfung und Zerteilung der Adresse eben gleich in einem Schritt machen, aber mach was Dich freut.

                Ganz davon abgesehen, daß www.example.org und example.org überhaupt nicht die gleichen Seiten sein müssen.

                MfG
                Götz

                --
                Losung für Dienstag, 30. November 2004
                Gott der Herr nahm den Menschen und setzte ihn in den Garten Eden, dass er ihn bebaute und bewahrte. (1. Mose 2,15)
                Der pflanzt und der begießt, sind einer wie der andere. Jeder aber wird seinen Lohn empfangen nach seiner Arbeit. (1. Korinther 3,8)
                (Losungslink)
      2. Hallo Weini,

        Ich kenne nur $url= parse_url("$url"); echo $url["host"];.
        Aber das zeigt ja mit www an.

        Auch bei dem URL dieses Forums (http://forum.de.selfhtml.org)

        Gibt es nicht so einen einfachen Befehl der die URL ohne www anzeigt?

        Und was sollte dieser einfache Befehl Deiner Meinung nach machen, wenn der URL nicht mit www beginnt?

        Beispiele:

        http://de.selfhtml.org/
        http://web.de/

        www ist ein recht häufiger Name, aber nicht vorgeschrieben.

        Freundliche Grüsse,

        Vinzenz