Här står att Reg. Exp:ar är giriga, dvs vill matcha en så stor sträng som möjligt. Dessutom står det att ? gör att den inte blir girig....
Detta gäller Perl-versionen av Reg.Exp:arna.
Hm, börjar bli lite snurrigt blabd Reg.Exp trådarna ;)
Åter till URL konverteringen alltså :)
h://, tp:// osv. ska förhindras (vem var det som gjorde ATT de fungerade; bugg!) och HTTP:// och Http:// ska fungera.
Prova
<?
$body="Matti har htp://www.nic-sys.se/\n som startsida? Clas har tröttnat på [url="httP://www.nic-sys.se"]httP://www.nic-sys.se[/url] . Nicclas tycker att [url="hTTp://www.allanyheter.com"]hTTp://www.allanyheter.com[/url] är coolare!\n\n";
$body = preg_replace("/(((?i)http|news|ftp):\/\/([^ \n\r\t]+))/", "<a href=\"\\1\">\\1</a>", $body);
echo $body;
?>
är det så stora problem med RegExp i PHP så man måste använda Perls RegExp?
Nja, PHP klarar ju båda formaten. Och det verkar som om Perl-versionen funkar bäst/enklast just för detta.
Anledningen till ditt problem är att '.' inte matchar radmatningar normalt sett. Och lösningen är att ha med flaggan 's' för att få den att göra det. :)