Reputation: 28354
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?
Upvotes: 10
Views: 20540
Reputation: 38603
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)+/
.
Upvotes: 14