CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   PHP (http://www.codingforums.com/forumdisplay.php?f=6)
-   -   URLs and TEXT fields (http://www.codingforums.com/showthread.php?t=3739)

Jabbamonkey 08-10-2002 06:30 AM

URLs and TEXT fields
 
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

with

<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?

Jabbamonkey

firepages 08-10-2002 11:24 AM

regular expressions are required, here in a function...

PHP Code:

<?
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');
?>


Jabbamonkey 08-10-2002 03:13 PM

Regualr Expressions
 
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.

Jabbamonkey

SpiritualStorms 10-24-2004 04: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".

or

"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:

http://search.yahoo.com/search?fr=sl...ar+expressions

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.

titansolaris 10-24-2004 05:22 AM

http://codingforums.com/showthread.php?t=46511 Look here!

trib4lmaniac 10-24-2004 03:07 PM

www.regularexpressions.info

greg76 10-26-2004 12:23 AM

I have similar to Firepages' solution.

PHP Code:

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:

PHP Code:

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.

~Greg


All times are GMT +1. The time now is 09:06 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.