сам я в регулярках плохо шарю и поэтому решил первым делом поискать готовые решения.
но почти все они с косяками,например ни в одном примере почему то не нашел такую регулярку которая бы НЕ заменяла текст в уже сформированной <a href ссылке. (не отрицаю что мог плохо искать!)
отчаявшись начал изучать регулярки сам, кое как написал почти рабочий вариант (кстати процесс изучения то интересный оказался),но он мне в начало ссылки вставляет символ переноса. никак не знаю как его убрать оттуда.
то есть например ссылку http://site.ru моё выражение заменит на
<a href=" http://site.ru">http://site.ru</a> (обратить внимание тут типа перенос сразу после кавычки href=" http )
вот мой код:
<?php
// текст ссылок
$text='http://site1.ru <br>
www.site2.ru <br>
<a href="http://site3.ru" target=_blank>site3.ru</a> (в этой строчке ничего заменятся не должно так как изначально кликабельная ссылка)
';
//текст ссылок END
//заменяем все http:// ссылки
$text = preg_replace("#(\s|^)http://[^\s\[<]+#i",
"<a href=\"$0\" target=_blank><u>\$0</u></a>",
(stripslashes($text)));
//заменяем оставшиеся www ссылки, которые без http://
$text = preg_replace("#(\s|^)www.[^\s\[<]+#i",
"<a href=\"http://$0\" target=_blank><u>\$0</u></a>",
(stripslashes($text)));
echo $text."<br><br>";
?>