Originariamente inviato da filippo.toso
Se vuoi una funzione affidabile e stra-testata, scaricati Wordpress e guarda nel file formatting.php la funzione make_clickable().
scusa la mia ignoranza

Codice PHP:
function urlreplace($ret) {
    
$ret ' ' $ret;
    
// in testing, using arrays here was found to be faster
    
$ret preg_replace_callback('#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is''_make_url_clickable_cb'$ret);
    
$ret preg_replace_callback('#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is''_make_web_ftp_clickable_cb'$ret);
    
$ret preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i''_make_email_clickable_cb'$ret);
    
// this one is not in an array because we need it to run last, for cleanup of accidental links within links
    
$ret preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i""$1$3</a>"$ret);
    
$ret trim($ret);
    return 
$ret;

se lancio la funzione e mettendo del testo con interno tipo www.sito.it

non va proprio...