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