Как заменить решетку в 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>";
}
Лучше сначала из текста изъять все логины пользователей, сделать один запрос в БД, только потом заменять.