specialist, что-то типа
$text='http://www.yandex.ru qqq <a href="http://www.yandex.ru">яндекс</a>';
$text=preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#",'<a href="\\0">\\0</a>',$text);
echo $text;
если в тексте нет уже выделенных ссылок, нормально работает, но если есть получается белиберда
SelenIT, вроде помогло

$html = 'http://www.qq.ru/?qq=ww <br>
<a href="htt://ww.qq.ru">qq</a>';
$substring = 'http\S+';
$replacement = '<a target=_blank href=$2>$2</a>';
$result = preg_replace("/((?:^|>)[^<]*)($substring)/s", '$1'.$replacement,
$html);
echo $result;
работает
-~{}~ 01.06.05 11:48:
Хотя тут тоже есть один баг, если радом с ссылкой (т.е. без пробела) есть какой-то тег, например <br> получается <a target=_blank href=http://www.qq.ru/?qq=ww<br>>http://www.qq.ru/?qq=ww<br></a>