...

View Full Version : Hyperlink URLS



Deacon Frost
01-09-2010, 12:19 PM
I've got this function:



/* clickable($url) changes a block of text to use urls */
function clickable($url){
$in = array('`((?:https?|ftp)://\S+[[:alnum:]]/?)`si','`((?<!//)(www\.\S+[[:alnum:]]/?))`si');
$out = array('<a href="$1" rel="nofollow" target="_blank">$1</a>', '<a href="http://$1" rel="nofollow" target="_blank">$1</a>');
return preg_replace($in,$out,$url);
}


And, I just tried it out with a series of other functions, and it went haywire. I don't understand regex yet, so help is appreciated ^.^.

Here's the context I'm using it in:



/* escape_data($string) This function cleans data for databases. */

function escape_data ($data) {
db_connect();
if (ini_get('magic_quotes_gpc')) {
$data = stripslashes($data);
}
$data = mysql_escape_string (trim($data));
db_close();
return $data;
}

/* format_string($str) fixes a string for input and display */
function format_string($str) {
$string = escape_data($str);
$string = str_replace("\n", "<br />", $string);
$string = clickable($string);
return $string;
}

echo format_string($input);



The problem I was having was rather odd. The hyperlink linked multiple url strings with 1 anchor. But it did that twice. The format_string function also failed to replace '\n' with '<br />' in the instance when I used clickable(). It's never done that before, though =/.

JAY6390
01-09-2010, 02:55 PM
If you're working with URL's, I highly recommend using parse_url() (http://www.php.net/parse_url) instead of a regex



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum