I'm trying to find every instance of @username in comment text and replace it with a link. Here's my PHP so far:
$comment = preg_replace('/@(.+?)\s/', '<a href="/users/${1}/">@${1}</a> ', $comment);
The only problem is the regex is dependent upon there being whitespace after the @username reference. Can anyone help me tweak this so it will also match if it is at the end of the string?
To detect whitespace or end of string, you would use: /@(.+?)(?=\s|$)/
, but unless your usernames contain non-alphanumeric characters, it's simpler to use the \w
for word character or \b
for word break, i.e.: /@(.+?)\b/
or /@(\w)+/
.
try /@(\w+)/
instead of /@(.+?)\s/
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With