Christopher: Links automatisch ersetzen

wie ist es möglich, dass links in einen normalen text automatisch zu html-links werden?

ich habe mir folgendes überlegt:

$text  = preg_replace('#((?:http://|https://|ftp://|www.)[^ ]+)#', '<a href="$1">$1</a>', $text);

also wenn im text http://irgendeinlink, https://link oder ftp://link drin vorkommt, dann soll daraus ein HTML-LINK werden. aber so funktioniert das ja nicht, denn dann macht er den link vom ersten http:// bis zum ende des textes.

  1. Google ist dein Freund!!!!

    Aber ich will mal nicht so sein ;) :

    function linker($link)  
    {  
      $link = str_replace("http://www.","www.",$link);  
      $link = str_replace("www.","http://www.",$link);  
      $link = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\">$1</a>", $link);  
      $link = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$link);  
      
      return $link;  
    }
    

    so long,
    Samy

    1. gudn tach!

      $link = preg_replace("/([\w]+://[\w-?&;#~=./@]+[\w/])/i","<a href="$1">$1</a>", $link);

      und unter beruecksichtung, dass man regexps auch anders schreiben kann, waere der regexp dasselbe wie
        '%\w+://[\w-?&;#~=./@]+[\w/]%i'
      (und dann $0 statt $1)

      $link = preg_replace("/([\w-?&;#~=./]+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?))/i","<a href="mailto:$1">$1</a>",$link);

      und hier:
        '%[\w-?&;#~=./]+@[?[a-z0-9.-]+.(?:[a-z]{2,3}|[0-9]{1,3})]?%i'
      (und dann $0 statt $1)

      aber gut wird's dadurch immer noch nicht. urls duerfen bspw. auch '%' und '_' enthalten und tlds koennen auch mehr als 3 zeichen enthalten...

      prost
      seth