So I edited this a little bit and I'm now using it on my forum and my news articles...
Text Formatted Code
/**
* Checks for urls and eMail addresses and replaces them with links
* (Stolen from phpBB and tweaked)
*/
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, comma, double quote or <
$ret = preg_replace("#(^|[n ])([w]+?://[^ "nrt<]*)#is", "1<a href="2" target="http">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).[^ "tnr<]*)#is", "1<a href="http://2" target="nohttp">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);
}
/**
* tweaked code originally by Nathan Codding - Feb 6, 2001
* Reverses the effects of make_clickable(), for use in editpost.
* - sort of distinguishes between "www.xxxx.yyyy" and "http://aaaa.bbbb" type URLs by the target set in make_clickable.
*
*/
function undo_make_clickable($text)
{
$text = preg_replace("#<a href="http://(.*?)" target="nohttp">.*?</a>#i", "1", $text);
$text = preg_replace("#<a href="(.*?)" target="http">.*?</a>#i", "1", $text);
$text = preg_replace("#<a href="mailto:(.*?)">.*?</a>#i", "1", $text);
return $text;
}
I changed the target attributes and I'm now using them to return exactly what the author of the story typed in instead of adding or subtracting the http:// part by default
I'm not using undo_make_clickable for editing forum posts at all, but I am when editing plain old text stories.
I have two or three little bugs I haven't figured out yet.
conversion doesn't show up when previewing stories.
Tried to put the call to the function in the right place, but must've missed or something.
if the URL is the first character of a new line in an HTML formatted story, it won't be converted (works fine in plain text). The same bug appears when previewing forum posts, but when submitting, it works just fine. I haven't found the similarity between the two situations. The exception to this bug is if it's the first character in the whole story or post...