Foros del Web » Programando para Internet » PHP »

expresiones regulares - Url a enlace

Estas en el tema de expresiones regulares - Url a enlace en el foro de PHP en Foros del Web. Buenas. He estado comiendome para hacer una cosa pero no doy con la manera. He leido varios tutoriales acerca del tema pero no me aclaran ...
  #1 (permalink)  
Antiguo 30/12/2011, 04:35
 
Fecha de Ingreso: abril-2011
Mensajes: 18
Antigüedad: 13 años
Puntos: 1
expresiones regulares - Url a enlace

Buenas.
He estado comiendome para hacer una cosa pero no doy con la manera. He leido varios tutoriales acerca del tema pero no me aclaran mucho.
Resulta que capturo ciertos tweets de mi cuenta y son String así:

Código PHP:
$cadena "Que guapo el doodle navideño de http://t.co/RE6JqTAS"
Me gustaría convertir la URL a enlaces del tipo <a href="http://t.co/RE6JqTAS">http://t.co/RE6JqTAS</a> Pero no doy con la manera de hacerlo.

Un saludo. Gracias de antemano.
  #2 (permalink)  
Antiguo 30/12/2011, 05:00
 
Fecha de Ingreso: abril-2011
Mensajes: 18
Antigüedad: 13 años
Puntos: 1
Respuesta: expresiones regulares - Url a enlace

He encontrado por fín una función que va!

sería algo así:

Código PHP:
    function texto_a_url($text){
        
// pad it with a space so we can match things at the start of the 1st line.
        
$ret ' ' $text;
 
        
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
        // xxxx can only be alpha characters.
        // yyyy is anything up to the first space, newline, comma, double quote or <
        
$ret preg_replace("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i"'\1<a href="\2://\3" target="_blank">\2://\3</a>'$ret);
 
        
// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
        // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
        // zzzz is optional.. will contain everything up to the first space, newline,
        // comma, double quote or <.
        
$ret preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i"'\1<a href="http://\2.\3" target="_blank" rel="nofollow">\2.\3</a>'$ret);
 
        
// matches an email@domain type address at the start of a line, or after a space.
        // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".

        // Remove our padding..
        
$ret substr($ret1);
 
        return(
$ret);
    } 
Voy a ver si puedo conseguir que los @nicktwitter los pase a un enlace a <a href="http://twitter.com/nicktwitter">Nicktwitter</a>
  #3 (permalink)  
Antiguo 30/12/2011, 05:02
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: expresiones regulares - Url a enlace

Seguro que se puede hacer mejor, pero teniendo en cuenta que el enlace está al final de la cadena, y suponiendo que siempre sea así, puedes usar:

Código PHP:
Ver original
  1. <?php
  2. $cadena ="Que guapo el doodle navideño de http://t.co/RE6JqTAS";
  3. $ubicar="http";
  4. $url=strstr($cadena , $ubicar);
  5. $subst="<a href=\"$url\">$url</a>";
  6. echo str_replace($url, $subst, $cadena);
  7. ?>

Saludos
  #4 (permalink)  
Antiguo 30/12/2011, 05:05
 
Fecha de Ingreso: abril-2011
Mensajes: 18
Antigüedad: 13 años
Puntos: 1
Respuesta: expresiones regulares - Url a enlace

En este caso sí está al final pero es probable que no lo esté porque eso lo captura de un tweet.
De todas formas gracias por la ayuda!

Etiquetas: enlace, expresiones, regulares, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:14.