Questo è il codice corretto, a quello postato prima mancava \0 alla fine
Codice PHP:
//Rende l'url linkabile nel campo messaggio
$messaggio = preg_replace("/^(http(s)?:\/\/|ftp(s)?:\/\/|www\.)[A-Za-z0-9][-_!#$%&;:.,*+=?^{|}~A-Za-z0-9\/]*[a-z0-9](\.[a-z0-9]{2,4})$/",'[url="\\0"]\\0[/url]', $messaggio);