Regular expression to convert usernames into links like Twitter

David Carr

Tutorials PHP & MySQL

When using plain textareas it's useful to link usernames in the format as @name but won’t use email addresses. 

$subject = 'Hello, @daveismyname twitter handle is clickable but not this email someone@domain.com';
echo preg_replace('/\B\@([a-zA-Z0-9_]{1,254})/', '<a href="user/$1">$0</a>', $subject)

This looks for a non–word-boundary (to prevent a@b [i.e. emails] from matching) followed by @, then between one and 20 (inclusive) characters in that character class. Of course, the anything-except-space route, as in other answers; it depends very much on what values are to be (dis)allowed in the label part of the @label.

Fathom Analytics $10 discount on your first invoice using this link

Help support the blog so that I can continue creating new content!

Sponsor

Fathom Analytics $10 discount on your first invoice using this link

Subscribe to my newsletter

Subscribe and get my books and product announcements.

© 2006 - 2024 DC Blog. All code MIT license. All rights reserved.