Rozpoznání odkazu?

Potřeboval bych pomoc s rozpoznáním odkazu, na netu jsem našel způsob, ve kterym si text rozdělím na slova, poté následuje toto:


if (EregI("^(www\..+\..{2,3})$", $slovo[$y])): //jedna se odkaz typu www......
$odkaz = EregI_Replace("^(www\..+\..[a-z])$", "<a href=\"http://\\1\">\\1</a> ", $slovo[$y]);
elseif (EregI("^(http://.+\..{2,3})$", $slovo[$y])): //jedna se odkaz typu http://.......
$odkaz = EregI_Replace("^(http://..+\..{2,3})$", "<a href\"=\\1\">\\1</a> ", $slovo[$y]);
else:
$odkaz = $slovo[$y] . " "; //jedna se o normalni slovo
endif;

Jede to, až na celkem zásadní věc:
Když mu zadám například "http://www.webzdarma.cz/", vrátí to jako odkaz. Ale jakmile přidám cokoli za lomítko, "http://www.webzdarma.cz/forum" tak už to odkaz nepozná.

Děkuji za náměty
Jeden námět: máš špatné rozpoznávání odkazů (čili blbý regulár). Někde doma na to mám napsanou celkem šikovnou pidifunkci a zvládá to trošku víc než jen http:
Bohužel zrovna nejsem doma (kdo by taky byl o víkendu doma, že (; ), takže pokud vydržíš ...
ta návštěvní kniha (michal kebrt / interval) ze které si to vzal je naprosto šílená, hodně rychle bych se poohlédnul po lepší :)

já používám pár řádků zkopírovaných z wordpressu, které mi fungují bez problémů.

$text = preg_replace(
array(
'#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
'#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
'#([\s>])([a-z0-9\-_.]+)@([^,< \n\r]+)#i'),
array(
'$1<a href="$2" rel="nofollow">$2</a>',
'$1<a href="http://$2" rel="nofollow">$2</a>',
'$1<a href="mailto:$2(uzenáč)$3">$2(uzenáč)$3</a>'), $text
);
Jistě že vydržím ;-) nejdřív se podívám na Mikeho námět :-)
(michal kebrt / interval) ? o čem to mluvíš?
http://interval.cz/clanky/navstevni-kniha-v-php-bez-pouziti-databaze-osetreni-textu/

odtud to je, ten tvůj kód ;-)
Tak tedy:

function prevod_odkazu($text, $pocet=60) {
 $nahrad = '!([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])!';
 preg_match_all($nahrad, $text, $adress);
 for ($i=0; $i<=count($adress[0]); $i++) {
  if(strlen(@$adress[0][$i])>$pocet) $txt = substr($adress[0][$i], 0, $pocet-3).'...';
  else @$odkazik = $adress[0][$i];
 @$odkaz = '<a href="'.$adress[0][$i].'" title="'.$adress[0][$i].'" rel="nofollow">'.$txt.'</a>';
  @$text = str_replace($adress[0][$i], $odkaz, $text);
 }
 return $text;
}

Zároveň to i skracuje text odkazu na délku uvedenou v $pocet.
Btw, čas od času to házelo nějaké warningy. Nechtělo se mi to řešit standardní cestou, tak jsem tam napral "@" a už je to dobrý... :)
No, děkuji :) já něco zkusím, snad to pochopím.