Sandra: http bei URL entfernen

Hallo,

ich habe ein Problem. Ich möchte gerne mittels Javascript eine url zerlegen bzw. möchte ich sämtliche https in der url rauslöschen.
Die url wird in ein Formular eingegeben und soll dann automatisch alle http löschen. Also wenn z.B. jemand aus versehen folgendes eingibt: http://http://www.bla.de soll die url auf www.bla.de gekürzt werden. Ich habe bis jetzt keinen Befehl gefunden, der mir die ganze url durchsucht und sämtliche https löscht. "replace" ersetzt ja nur das erste Zeichen das er findet...also das erste http.

Ich hoffe ihr könnt mir helfen.

Lg Sandra

  1. Hi,

    Also wenn z.B. jemand aus versehen folgendes eingibt: http://http://www.bla.de soll die url auf www.bla.de gekürzt werden.

    Dir ist aber schon bewusst, dass es sich dann nicht mehr um eine URL handelt.

    Ich habe bis jetzt keinen Befehl gefunden, der mir die ganze url durchsucht und sämtliche https löscht. "replace" ersetzt ja nur das erste Zeichen das er findet...also das erste http.

    Nein, replace() ersetzt auch beliebig viele, wenn Du es sagst. Schaue Dir die Seiten zu RegExp genauer an.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Dir ist aber schon bewusst, dass es sich dann nicht mehr um eine URL handelt.

      Ja natürlich :) aber es ist einfacher, wenn ich zuerst alle http rauskürze, dann eins dazufüge. So kann nix schief gehen

      Nein, replace() ersetzt auch beliebig viele, wenn Du es sagst. Schaue Dir die Seiten zu RegExp genauer an.

      hm, ok danke. dann kuck ich mal

      1. Hi,

        Ja natürlich :) aber es ist einfacher, wenn ich zuerst alle http rauskürze, dann eins dazufüge. So kann nix schief gehen

        richtig :-)

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Ja natürlich :) aber es ist einfacher, wenn ich zuerst alle http rauskürze, dann eins dazufüge. So kann nix schief gehen
          richtig :-)

          Falsch.

          http://www.example.org/httpstuff/ -> http://www.example.org/stuff/

          Und falls http: oder http:// erst weggelöscht und dann einfach hinzugefügt wird:

          https://www.example.org/ -> http://https://www.example.org

          cu,
          Andreas

          --
          Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
          http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
          1. Hi,

            Ja natürlich :) aber es ist einfacher, wenn ich zuerst alle http rauskürze, dann eins dazufüge. So kann nix schief gehen
            richtig :-)
            Falsch.

            nicht, wenn man "alle http" als "jedes Vorkommen der Zeichenkette 'http://'" interpretiert, wie es IMHO anhand der Beispiele schon im ersten Posting klar war.

            https://www.example.org/ -> http://https://www.example.org

            Ja, es gilt zu prüfen, ob dies ebenfalls von Relevanz ist.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Moin Moin !

              https://www.example.org/ -> http://https://www.example.org
              Ja, es gilt zu prüfen, ob dies ebenfalls von Relevanz ist.

              Darf ich mal raten: Ein vorausgefülltes Textfeld à la SelfForum-Formular.

              DAU hängt per Copy-and-Paste eine vollstänige URL an statt den Default-Wert zu überschreiben.

              Also gibt es nur zwei Möglichkeiten:

              Richtige URL oder richtige URL mit einem extra-"http://" vorangestellt.

              Setzt man nun eine passende RE an, die einen Anchor benutzt, löst sich das von ganz alleine auf:

              $url=~s|^(http://){0,2}||;
              $url='http://'.$url:

              Bleibt die Frage: Was ist mit FTP- und HTTPS-URLs?

              Besserer Ansatz: kein Protokoll vorgeben und nachher die URLs ggf. à la Webbrowser reparieren:

              URL beginnt mit "http://", "ftp://", "https://" => fertig
              URL beginnt mit "ftp." => "ftp://" voranstellen, fertig
              (weitere Feinheiten für Vertipper ...)
              sonst => "http://" voranstellen, fertig.

              Alexander

              --
              Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
              1. Hallo Alexander,

                sonst => "http://" voranstellen, fertig.

                vorher meinst Du, dass ich mit www.meinedomain.xy wirklich http://
                meine? Eigentlich will ich doch zu gopher://www.meinedomain.xy/ ;-)

                Viele Grüße,
                Stefan

                PS: War nur ein Spaß, finde Deine Vorgehensweise auch sinnvoll.

  2. Also wenn z.B. jemand aus versehen folgendes eingibt: http://http://www.bla.de soll die url auf www.bla.de gekürzt werden.

    Versuchs doch einfach mal substr(0,7) == "http://" in deine Funktion einzubauen, damit kannst du wenigstens testen ob ein http:// am Anfang des Strings steht. und den dann einfach abschneiden.

    Ich habe bis jetzt keinen Befehl gefunden, der mir die ganze url durchsucht und sämtliche https löscht. "replace" ersetzt ja nur das erste Zeichen das er findet...also das erste http.

    das müsste aber doch auch reichen, denn normalerweise gibt ja niemand das doppelte Protokoll ein. oder?

    1. Hallo,

      kannst Du Dich bitte bemühen, bei Antworten vernünftig zu zitieren?
      Wäre wirklich nett, weil der Text, wenn Du wie eben geschehen sämt-
      liche Hinweise auf Zitate löschst, sonst kaum noch verstehbar ist.

      Viele Grüße,
      Stefan

    2. das müsste aber doch auch reichen, denn normalerweise gibt ja niemand das doppelte Protokoll ein. oder?

      ansonsten kannst du einfach den erhaltenen String in eine neue Variable schreiben und dann die selbe prozedur nochmal. Oder du baust das ganze gleich in eine While schleife ein!