Plain text link to HTML with a PHP function and regular expressions

If you have ever wanted to turn a plain text link, http://www.smjdesign.com, into a "linked" HTML version, http://www.smjdesign.com, you can now. Pass the following function your entire text field and it will find all your links and return tagged HTML.

function replace_plain_text_link($plain_text) {
$url_html = preg_replace(
'/(?<!S)((http(s?):\/\/)|(www.))+([\w.1-9\&=#?\-~%;\/]+)/',
'<a href="http$3://$4$5">http$3://$4$5</a>', $plain_text);
return ($url_html);
}
echo replace_plain_text_link("hi this is dummy text before
http://www.smjdesign.com hi this is dummy text after")

The majority of the above regular expression was not created by me. I however cannot locate the original programmer. It was posted on a message board I visited along with ftp and mailto options. If you can help, please comment.

If you have found this post valuable, please share it with others: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Facebook
  • del.icio.us
  • Google
  • StumbleUpon
  • TwitThis

A note about the author

Photograph of Stephen JamesMedia designer with experience in interactive, print and video. I have a marketing and advertising agency background and currently work full-time at a full-service agency. Visit my contact page, even if you would just like to say hello. To stay in touch, follow me on Twitter or connect on a variety of other social networks. Thanks for stopping by!

4 Responses to “Plain text link to HTML with a PHP function and regular expressions”

  1. Michael Says:

    The script works good unless you have a longer url like http://www.myspace.com/wearemongrel than only http://www.myspace.com will be linked and /wearemongrel is left out in the cold

  2. Stephen James Says:

    @Michael It’s fixed now. Your example URL will now work. Thanks.

  3. Matthew Hall Says:

    Great function, thanks. Saved me a bit of time messing about with regular expressions!

    Matthew

  4. Mamsaac Says:

    Works, but not for every URL. For example, Google Maps links =) You would have to add a comma (and some other characters). Still found this useful, thanks.

Leave a Reply


My Sites