Regular expression to find and replace @ mentions like twitter
I am developing a PHP application which needs a regular expression to replace the @ mentions like twitter. Also the regular expression should satisfy the following needs.
- if there is just
@
and nothing before and after that then it should not be replaced. @
in the emails should not be replaced. For eg.sam@example.com
should not be replaced.- Only strings like
@sam
or@example
should be replaced like<a href="http://twitter.com/sam">@sam</a>
and<a href="http://twitter.com/example">@exa开发者_Go百科mple</a>
Please help. Thanks in advance.
Wow. I found the answer myself guys.
$tweet = preg_replace('/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '$1<a href="http://twitter.com/$2">@$2</a>', $tweet);
Thanks for your help guys.
How about something like -
(?<!\w)@[\w]+
As twitter can contain up to 15 characters, you could write it like this to avoid some bugs:
$tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
精彩评论