Tema: Otra duda
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/03/2004, 18:01
Jordi1
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
No estoy muy ducho en expresiones regulares, pero un dia navegando encontre esta funcion que creo sale de un motor de templates, no se exactamente de cual, si alguien lo sabe todos agradeceriamos que puesiera los creditos,

bueno a lo que hibamos, realmente me parecio muy interesante, y funciona a las mil maravillas, solo tiene un pequño defecto que necesita como minimo un espacio delante del URL a parserar, como solo la utilizo en contadas ocasiones pues no me puse a solucionar el tema pues es un defecto minimo y sabiendolo se pone y santas pascuas.

la funcion es esta
Código PHP:
 function busca_url($_valor=''){

        
$pattern[0] = "#([\n ])([a-z]*)://([^, \n\r]+)#i"
        
$replacement[0] = "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>"
        
$pattern[1] = "#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)#i"
        
$replacement[1] = "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">[url]www.\\2.\\3\\4[/url]</a>"
        
$pattern[2] = "#([\n ])([a-z0-9\-_.]+?)@([^, \n\r]+)#i"
        
$replacement[2] = "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"
        
$_remplazado preg_replace($pattern,$replacement,$_valor);
        return 
$_remplazado;
        

La he probado con el URL que nos das y va bien, solo eso si la pruebas solo con este URL ponle un espacio delante.

Espero que te sirva
Un saludo