Я пытаюсь найти каждый экземпляр @username в тексте комментария и заменить его ссылкой. Вот мой PHP:
$comment = preg_replace('/@(.+?)\s/', '<a href="/users/${1}/">@${1}</a> ', $comment);
Единственная проблема заключается в том, что регулярное выражение зависит от наличия пробела после ссылки @username. Может ли кто-нибудь помочь мне настроить его так, чтобы он также соответствовал, если он находится в конце строки?
try /@(\w+)/
вместо /@(.+?)\s/
.
Чтобы определить пробелы или конец строки, вы должны использовать: /@(.+?)(?=\s|$)/
, но если ваши имена пользователей не содержат алфавитно-цифровые символы, проще использовать символ \w
для слова или \b
для прерывания слова, то есть: /@(.+?)\b/
или /@(\w)+/
.