View Full Version : URLs and TEXT fields

08-10-2002, 07:30 AM
Ok, I have a database with the following text field...

"This event has been going on for the past 20 years. For more information, visit www.domainname.com or call 212.555.1234."

Well, when I print this field on a php page, I'm interested in making all urls a link. So, I'm looking to substitute any...

www.domainname.com OR http://www.domainname.com


<a href="http://www.domainname.com/" target="_blank">www.domainname.com</a>

In short, I'm trying to turn the above text field into:

"This event has been going on for the past 20 years. For more information, visit <a href="http://www.domainname.com/" target="_blank">www.domainname.com</a> or call 212.555.1234."

How do you go about changing elements inside a text field? I know that I could put the html in the text field, but the administrator of the database will not want to deal with that. Any ideas?


08-10-2002, 12:24 PM
regular expressions are required, here in a function...

function parse_urls($str){
$str=eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)"," <a href=\"http://www.\\2\">\\2</a>",$str);
$str=eregi_replace("^www\\.([^ ,\r\n]*)","<a href=\"http://www.\\1\">\\1</a>",$str);
$str=eregi_replace("([ \r\n])http://([^ ,\r\n]*)"," <a href=\"http://\\2\">\\2</a>",$str);
$str=eregi_replace("^http://([^ ,\r\n]*)"," <a href=\"http://\\1\">\\1</a>",$str);
return $str;

echo parse_urls('www.this.com and now http://www.that.com');

08-10-2002, 04:13 PM
Wow, thanks. I've never used regular expressions before (very new to php). Can you explain what regular expressions are, and what they do (or provide a link to where I can find out).

I'm the type that doesn't just like to cut and paste, but also wants to learn how it works. Thanks.


10-24-2004, 05:11 AM
i am not sure in what specific language you are interested in work with, but if you are interested in some tutorials, you could always type something like,

"tutorials regular expressions + javascript".


"tutorials regular expressions + PHP",

into a search box, and then hit search, for the browser to have its results. I found the following link useful, if you are interested:


You might want to go to Amazon.com, and get type "regular expressions" into their search boxes, under the heading of books, and you should be able to find a book, or 2, on the subject matter.

Good luck.

10-24-2004, 06:22 AM
http://codingforums.com/showthread.php?t=46511 Look here!

10-24-2004, 04:07 PM

10-26-2004, 01:23 AM
I have similar to Firepages' solution.

function addLinks($var, $linkstyle){
$var = ereg_replace("([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])", "<a class=\"$linkstyle\" href=\"\\1\">\\1</a>", $var);
$var = ereg_replace("([_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@" . "[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+)", "<a class=\"$linkstyle\" href=\"mailto:\\1\">\\1</a>", $var);
return $var;

whatever you type in your cms (I am assuming you are using some cms) http://www.link.com or email@email.com, those will be turned to links.

When you want to edit text again, use this function before displaying want-to-edit data:

function remLinks($var, $linkstyle){
$var = ereg_replace ("(<a class=\"$linkstyle\" href=\"[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]\">)([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])(</a>)","\\2", $var);
$var = ereg_replace ("(<a class=\"$linkstyle\" href=\"mailto:)([_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@" . "[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+)(\">)([_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@" . "[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+</a>)", "\\2", $var);
return $var;

I copied and modified above from my old CMS, so I hope it works properly. If not - give me a yel.