Не понимаю, почему находит простое слово, если я указал границу?
$str = 'http://site.ru, http://site.com, https://site.info sgdf';
echo preg_replace('#\b(https?://)([a-z0-9-]+)\.([a-z]{2,})\b#', '<a href="$1$2.$3">$2.$3</a>', $str);
Должно вывести site.ru, site.com, site.info
а выводит site.ru, site.com, site.info sgdf
https://ideone.com/Iavmu4 - всё выводится верно:
<a href="http://site.ru">site.ru</a>, <a href="http://site.com">site.com</a>, <a href="https://site.info">site.info</a> sgdf
Вероятно ты не учёл, что замена - это именно замена совпадений, соответственно, всё что не совпало, остаётся на своих метах. Так порисходит с запятыми, пробелами и sgdf.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости