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.
Further Reading on HTML and CSS
- Hiding an email address from spambots and spiders
- CSSsprite: Photoshop script combines two images for CSS hover
- Features and characteristics of a great 404 error page






January 16th, 2009 at 12:15 pm
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
January 23rd, 2009 at 4:44 pm
@Michael It’s fixed now. Your example URL will now work. Thanks.
July 7th, 2009 at 2:44 pm
Great function, thanks. Saved me a bit of time messing about with regular expressions!
Matthew
February 11th, 2010 at 8:56 pm
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.
March 20th, 2010 at 9:33 am
Script still works great for me but now I wonder if that would work to having a mail addy in the text ei a function that makes a mailto-link
March 22nd, 2010 at 8:19 am
@Michael I try not to have mailto links for anti-spam reasons–and if I do need a mail to link, I try to obfuscate it via JavaScript.
April 8th, 2010 at 1:31 pm
Well Stephen I see your point but I wasn´t very specific of my needs as said before your script is excellent if there is a web-link but what if there is a mail-link ei man@abc.com then I would like the mail-link to show up as a mailto-link and unfortunately I can´t make a regular html-mailto in the text since it is php.
Thanks in advance
April 8th, 2010 at 1:33 pm
Btw just like it does above
April 8th, 2010 at 1:39 pm
@Michael Look into this function in WordPress
http://codex.wordpress.org/Function_Reference/make_clickable
It’s inside wp-includes/formatting.php.