Black Friday sale is now on! 50% off Laravel: The Modular Way. Learn more

Regular expression to convert usernames into links like Twitter

David Carr

PHP & MySQL Tutorials

    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.

    Laravel Modules Book by David Carr

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

    Subscribe to my newsletter

    Subscribe and get my books and product announcements.

    © 2009 - 2022 DC Blog. All code MIT license. All rights reserved.