Sacar url del texto

Survivor

Hola buenas . Estoy haciendo un foro en php con la intencion de facilitar al maximo al usuario la tarea de escribir pudiendo editar el texto sin tener conocimientos de html . Mi duda es q despues de ver q en media-vida por lo visto han hecho una funcion que cambia todas las urls que empiezan tanto por www como por http:// por en enlace que se ponga y es bastante interesante he estado pensando en como hacerla pero no acabo de entender como consiguen sacar del texto el enlace sin ningun tipo de identificador tipo : [ www.loquesea.com ] <www.loqsea.com> ya que de esta forma sabria como hacerlo .

Alguien tiene alguna idea de como se consique sacar del texto el enlace?

Gracias por responder

nanoSpawn

escrito en pseudocódigo, buscas www o http; capturas la cadena; la reemplazas por el típico < a href="blahblah">blahblah< /a > y la metes en la base de datos.

Es más fácil si empleas expresiones regulares, pero vamos, se reduciría a hacer la función que rastree el texto en busca de alguna de esas dos cadenas y vaya almacenándola hasta que se tope con un espacio, retorno de carro, etc.

No puedo pegar código porque estoy en el curro, pero sería un interesante ejercicio para tí. PHP es potentísimo manejando cadenas de carácteres; solo has de ir viendo los detalles (www.php.net es utilísimo)

Survivor

Hola de nuevo

He estado probando como hacerlo y he conseguido un codigo que mas o menos funciona pero q tiene algun error que en estos momentos no se como arreglar x ejemplo :

este codigo solo imprime una url hasta el dominio , es decir, q si la url lleva a una carpeta dentro del alojamiento no la considera como url

como no utililizo expresiones regulares de normal no estoy muy seguro de como puedo hacer para que coja la cadena de caracteres desde el www hasta que haya un espacio que seria la solucion ya que si al poner una url x ejem www.loqsea.com/loqsea , en el codigo que he hecho se para en el .com pero si supiera que identificativo se le da al espacio ya estaria solucionado el problema ya que se pone al final de
(com|net|org|tk|es|com.es) y listo

<?php
$texto="lalalallalalalsdlasldalsd blablablalb bal balb abla bababab blabab www.media-vida.net asdhaksdf kajf sakfg asdfas df asdf";

$texto=ereg_replace("(http://|ftp://|www)(.+).(com|net|org|tk|es|com.es)","<a href=\"\0 \">\0</a>",$texto);
echo $texto; // el echo es solo para que veais lo que hace no lo sacaria asi en la web
?>

Alguna solucion a mi problema?

Gracias por responder

O

Esto a mi me funciona

$texto=ereg_replace("(http://|www([.]?[a-zA-Z0-9_/-])*)","<a href=\"http://\0 \">\0</a>",$texto);

Coge cualkier repeticion de caracteres alfanumericos y la barra , guion etc , hasta que se termine la repetición.

Pruébalo a ver si era lo que querías.

Survivor

muy bueno ese codigo si es justo lo q andaba buscando no cai en la cuenta de coger todos los caracteres alfanumericos ya me estaba iendo yo por otros caminos xD

Muchas gracias

Usuarios habituales