Как заменить решетку в href на id юзера? php

Всем привет подскажите пожалуйста как заменить решетку в href на id юзера как в подобной функции

preg_replace('#(@\w+)#', '<a href="#">$1</a>', $sourceText)

Получение id юзера

$user = $this->userRepository->findUserByUsername($userName);
$userId = $user->getId();

$userName - это упомянутый пользователь @user и тд

text <a href="#">@user</a> text text text <a href="#">@user2</a>, <a href="#">@user3</a> text <a href="#">@user4</a> <a href="#">@user5</a>!! text


Ответы (2 шт):

Автор решения: Pavel Krasulia
<a href="<?=$userId?>">@user</a>
<a href="<?=$userId?>">@user</a>
<a href="<?=$userId?>">@user</a>
<a href="<?=$userId?>">@user</a>
→ Ссылка
Автор решения: Евгений Гаврилов
$pattern = "#@(\w+)#";
$strIn = "text @user text text text @user2, @user3 text @user4 @user5!! text";
$strOut = preg_replace_callback($pattern, 'replacer', $strIn);
echo $strOut . "\n";

function replacer($m) {
        if (count($m) != 2) {
                return $m[0];
        }
        /*
         Ищем id пользователя значение берем $m[1]
         в $m[0] содержится то, что подошло к регулярному выражению
         в $m[1] содержится то что в круглых скобках регулярного выражения
        */
        $userID = 10;
        return "<a href=\"{$userID}\">{$m[1]}</a>";
}

Лучше сначала из текста изъять все логины пользователей, сделать один запрос в БД, только потом заменять.

→ Ссылка