Felix Riesterer: kriege diese regex net hin

Liebe Selfer,

aus einer Angabe à la "www.test.de" soll "http://www.test.de/" werden. Mein Script liefert aber "http://www.test.de/http:///", ergänzt also die beiden Zusätze hinten nocheinmal. Warum nur???

Hier mein Code:
$homepage = preg_replace("/(?i)(?:http://)?(.*)/?/", "http://\1/", $_POST['homepage']);

Wer weiß Rat?

Liebe Grüße aus Ellwangen,

Felix Riesterer.

  1. Hallo!

    Das sieht aus wie PHP, wenn ich das richtig sehe. Da kannst du das doch so machen:
    if (!ereg("http://",$_POST['homepage')){
    $homepage="http://".$_POST['homepage];}

    Nico

    1. Lieber Nico,

      das ist tatsächlich PHP (sorry für falsche Kategorie...). Vielen Dank für Deinen Vorschlag. Er hätte sicherlich funktioniert. Wahrscheinlich ist er sogar performanter als meine inzwischen selbst gefundene Lösung.

      Meine Lösung:
      $homepage = preg_replace("/(?i)^(?:http://)?([^ ]*)/?$/", "http://\1/", $_POST['homepage']);

      Der "Trick" war wohl das Suchmuster so zu modifizieren, dass Anfang und Ende des möglichen Strings mit einbezogen sind. Damit kann am Ende nix mehr kommen, das man eventuell auch (weil match) ersetzen könnte.

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.