Andavos: Problem mit URL Ersetzen

Hallo,
also ich bastel gerade an einem Script, bei dem [URL]www.123.de[/URL] Anklickbar gemacht werden soll.

Ich habe auch schon folgenden Code:

<?php
$text = "[URL]www.Hier.de[/URL] oder [URL]http://Hier.de[/URL]";

if (strpos($text, "[URL]www."))
   {
   $text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=http://\1>\1</a>", $text);
   }

elseif (strpos($text, "[URL]http://"))
   {
   $text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=\1>\1</a>", $text);
   }

else
   {
   $text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=\1>\1</a>", $text);
   }

echo $text
?>

Ruft man jetzt die Seite, sieht erst alles ganz normal an, aber:
klickt man jetzt auf http://Hier.de kommt man auf http://http://Hier.de

weiß jemand warum?

Und was muss ich an dem Script ändern, das er geht?

MFG
Andavos

--
http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  1. Hey,

    Und was muss ich an dem Script ändern, das er geht?

    Schreibstil und besser durchdenken. Und man sagt: "das Script".

    In deinem Script wird nur der erste regex ausgeführt, weil die anderen zwei
    elseif()-Blöcke niemals erreicht werden. Lass die if()s weg, und schreib nur
    die drei preg_replace() Anweisungen - und zwar in der richtigen Reihenfolge -
    vom speziellen zum allgemeinen Fall:

    s/  [URL]http:.+?[URL]  /  <a href="$1">$1</a>        /x;
     s/  [URL]www.+?[URL]    /  <a href="http://$1">$1</a> /x;
     s/  [URL].+?[URL]       /  <a href="$1">$1</a>        /x;

    MsF,
    milky

  2. Moin!

    if (strpos($text, "[URL]www."))
       {
       $text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=http://\1>\1</a>", $text);
       }

    --------------------------------------------------------------^^^^

    Da schreibst Du selbst das zweite http:// hin.
    Vielleicht solltest Du die auch auf [URL]http://....[/URL] untersuchen.

    Oder Du nimmst gleich den Automat:

    function linkfind($text) {
      $my_a_href= "<a target="_new" style="text-decoration:underline" title="gefundener Link" href="dereferer.php?";
      $my_pattern = '#(^|[^"=]{1})(HTTP://|http://|FTP://|ftp://|mailto:|news:|irc:|NEWS:|IRC:|gopher://|GOPHER://)([^\s<>]+)([\s\n<>]|$)#sm';
      $text=preg_replace($my_pattern,"\1<a href="\2\3">\2\3</a>\4",$text);
      $text=str_replace("<a href="","$my_a_href", $text);
    return $text; }

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.