Что вы можете сделать, это адаптировать захват. Переместите @
из фигурных скобок:
preg_replace("/@([^\s]+)/",
Затем вы можете написать свою строку замены как
'<a href="...$1">@$1</a>'
Обратите внимание, как первый $1
просто вставляет текст, а второй $1
дословно префиксируется @
, чтобы вернуть его обратно.