I found this while building a project at work: http://www.gidforums.com/t-1816.html

I was pulling text strings from an Atom feed in a PHP script, and some of them contained URLs. Obviously it’s beneficial and makes the program more functional if those URLs are clickable.

Here is the code for the function:

<?php
/**
NAME : autolink()
VERSION : 1.0
AUTHOR : J de Silva
DESCRIPTION : returns VOID; handles converting
URLs into clickable links off a string.
TYPE : functions
======================================*/

function autolink( &amp;$text, $target='_blank', $nofollow=true )
{
// grab anything that looks like a URL...
$urls = _autolink_find_URLS( $text );
if( !empty($urls) ) // i.e. there were some URLS found in the text
{
array_walk( $urls, '_autolink_create_html_tags',
array('target'=&gt;$target, 'nofollow'=&gt;$nofollow) );
$text = strtr( $text, $urls );
}
}

function _autolink_find_URLS( $text )
 {
 // build the patterns
 $scheme = '(http:\/\/|https:\/\/)';
 $www = 'www\.';
 $ip = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
 $subdomain = '[-a-z0-9_]+\.';
 $name = '[a-z][-a-z0-9]+\.';
 $tld = '[a-z]+(\.[a-z]{2,2})?';
 $the_rest = '\/?[a-z0-9._\/~#&amp;=;%+?-]+[a-z0-9\/#=?]{1,1}';
 $pattern = "$scheme?(?(1)($ip|($subdomain)?$name$tld)|($www$name$tld))$the_rest";$pattern = '/'.$pattern.'/is';
 $c = preg_match_all( $pattern, $text, $m );
 unset( $text, $scheme, $www, $ip, $subdomain, $name, $tld, $the_rest, $pattern );
 if( $c )
 {
 return( array_flip($m[0]) );
 }
 return( array() );
 }

function _autolink_create_html_tags( &$value, $key, $other=null )
 {
 $target = $nofollow = null;
 if( is_array($other) )
 {
 $target = ( $other['target'] ? " target=\"$other[target]\"" : null );
 // see: http://www.google.com/googleblog/2005/01/preventing-comment-spam.html
 $nofollow = ( $other['nofollow'] ? ' rel="nofollow"' : null );
 }
 $value = "<a href=\"$key\"$target$nofollow>$key</a>";
 }
?>

And here is how to use it:

<?php /* let's say we have a dummy string read
from a file or db $text = 'For more information,
visit our website http://www.desilva.biz or
www.gidforums.com/ to discuss this. This topic is
discussed here:   http://www.gidforums.com/t-1787.html';*/
// first we pass it through htmlentities()
$text = htmlentities( $text );
// include the 3 functions above
include_once( 'includes/the_3_functions_above_are_in_this_file.php' );
// NOW we run it through autolink()!
autolink( $text );
// display the text in a web page
echo $text."<br />\r\n";
?>

© 2011 /dev/dan Suffusion theme by Sayontan Sinha