All pastes #1360027 Raw Edit

Miscellany

public php v1 · immutable
#1360027 ·published 2009-03-13 17:29 UTC
rendered paste body
/** * Rewritten by Nathan Codding - Feb 6, 2001. * - Goes through the given string, and replaces xxxx://yyyy with an HTML <a> tag linking * 	to that URL * - Goes through the given string, and replaces www.xxxx.yyyy[zzzz] with an HTML <a> tag linking * 	to http://www.xxxx.yyyy[/zzzz] * - Goes through the given string, and replaces xxxx@yyyy with an HTML mailto: tag linking *		to that email address * - Only matches these 2 patterns either after a space, or at the beginning of a line * * Notes: the email one might get annoying - it's easy to make it more restrictive, though.. maybe * have it require something like xxxx@yyyy.zzzz or such. We'll see. */function make_clickable($text){	$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1&#058;", $text);	// pad it with a space so we can match things at the start of the 1st line.	$ret = ' ' . $text;	// matches an "xxxx://yyyy" URL at the start of a line, or after a space.	// xxxx can only be alpha characters.	// yyyy is anything up to the first space, newline, comma, double quote or <	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);	// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing	// Must contain at least 2 dots. xxxx contains either alphanum, or "-"	// zzzz is optional.. will contain everything up to the first space, newline, 	// comma, double quote or <.	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);	// matches an email@domain type address at the start of a line, or after a space.	// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".	$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);	// Remove our padding..	$ret = substr($ret, 1);	return($ret);}