Решение Меркуро с несколькими настройками.
<?php
$content = 'this is a test http://www.test.net www.nice.com hi!';
$regex[0] = '`(|\s)(http://[^\s\'\"<]+)`i';
$replace[0] = '<a href="${2}">${2}</a>';
$regex[1] = '`(|\s)(www\.[^\s\'\"<]+)`i';
$replace[1] = ' <a href="http://${2}">${2}</a>';
echo preg_replace($regex, $replace, $content);
?>
Узор:
(|\s)
Соответствует началу строки или пробела. Вы также можете использовать слово границы.
\b
Я добавил пару других символов, которые заканчивают URL, ", ', <. </p>