Code: Select all
function make_clickable($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, or comma.
$ret = preg_replace("#(ї\n ])(їa-z]+?)://(їa-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href="\\2://\\3" target="_blank">\\2://\\3</a>", $ret);
// matches a "www.xxxx.yyyyї/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// yyyy contains either alphanum, "-", or "."
// zzzz is optional.. will contain everything up to the first space, newline, or comma.
// This is slightly restrictive - it's not going to match stuff like "forums.foo.com"
// This is to keep it from getting annoying and matching stuff that's not meant to be a link.
$ret = preg_replace("#(ї\n ])www\.(їa-z0-9\-]+)\.(їa-z0-9\-.\~]+)((?:/їa-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href="http://www.\\2.\\3\\4" target="_blank">www.\\2.\\3\\4</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);
}Thanks
Reimer