Вам необходимо установить модификатор e , чтобы иметь выражение для подстановки, которое будет выполнено:
preg_replace('"\b(http://\S+)"e', '"<a href=\\"$1\\">".findTopDomain("$1")."</a>"', $text)
Обратите внимание, что ваша замена теперь должна быть допустимым выражением PHP. В этом случае выражение будет оценено как:
"<a href=\"$1\">".findTopDomain("$1")."</a>"
И не забудьте выйти из выхода, набрав хотя бы htmlspecialchars
:
preg_replace('"\b(http://\S+)"e', '"<a href=\\"".htmlspecialchars("$1")."\\">".htmlspecialchars(findTopDomain("$1"))."</a>"', $text)