Требуется найти в тексте адреса вида:
http://www.test.ru
http://www.тест.рф
https://www.test.ru
https://www.тест.рф
www.test.ru
www.тест.рф
И заменить их ссылками вида
<a href="http://www.test.ru" target="_blank">www.test.ru</a>
$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
$inp = 'Привет мир https://www.test.ru?sddf=12&sdfs=23 привет www.test.ru мир';
$text = preg_replace($pattern, '<a href="$1" target="_blank">$1</a>', $inp);
В моем примере адрес в вида "www.test.ru" не будет добавляться "http" в ссылку, соответственное она будет не правильно открываться