Bueno, eso no das a entender en el código que nos mostraste al principio. Fíjate bien en lo que escribes.
En ese caso, se me ocurre aplicar una expresión regular como esta:
Código PHP:
Ver original$url = "http://www.google.com";
echo preg_match("/^http(s?):\/\/(\w+\.)?\w+\-?\.\w{2,6}(.*?)$/", $url) ?
"<a href = '$url'>$url</a>" : $url;
Lo anterior imprime:
Código HTML:
Ver original<a href = 'http://www.google.com'>http://www.google.com
</a>
La expresión regular, busca en la cadena, coincidencias con una URL clásica, como el "http://" o "https://" del inicio, un posible grupo de caracteres alfanuméricos seguido de un punto (por ejemplo:
www.), otro grupo de caracteres alfanuméricos con un posible guion en medio (por ejemplo: mi-dominio), un punto y un conjunto de caracteres alfanuméricos que deben sumar un total mínimo de 2 y máximo 6 caracteres (por ejemplo: .com, .net, .uk). Pero además, dejo abierta la posibilidad de que haya un grupo más, que puede ser la ruta de recurso como en "www.mi-domino.com/libros/ejemplo.php".
DEMO
La expresión regular puede ser más compleja y eficiente, es solo una que se me ocurrió hacer, siendo ya la 1 am en mi país y a punto de irme a dormir.
Si no estás satisfecho con esta, busca otros ejemplos en internet para que puedas dar con una mejor, saludos.
EDITO:
Creo que esto se ajusta más a lo que buscas:
Código PHP:
Ver original$cadena = "Hola, visita http://www.google.com o http://www.facebook.com ahora mismo";
echo preg_replace("/\b(https?:\/\/(\w+\.)?\w+\-?\.\w{2,6}(.*?))\b/is", "<a href = '$1'>$1</a>", $cadena);
Lo anterior imprime lo siguiente:
Código HTML:
Ver originalHola, visita
<a href = 'http://www.google.com'>http://www.google.com
</a> o
<a href = 'http://www.facebook.com'>http://www.facebook.com
</a> ahora mismo
Había olvidado que la
\b, marca el inicio y final de una palabra, por lo tanto, si dentro de esos límites conservaba la expresión, entonces podría crear enlaces por cada URL que se encuentre en un texto.
DEMO
Saludos