Foros del Web » Programando para Internet » PHP »

Ayuda reconocer una url

Estas en el tema de Ayuda reconocer una url en el foro de PHP en Foros del Web. Hola amigos A ver la pregunta es simple, espero que la solución sea similar. El problema es el siguiente, tengo un campo de texto donde ...
  #1 (permalink)  
Antiguo 19/05/2008, 11:48
Avatar de RubenLo  
Fecha de Ingreso: julio-2006
Ubicación: Salamanca , España
Mensajes: 54
Antigüedad: 17 años, 9 meses
Puntos: 0
Ayuda reconocer una url

Hola amigos

A ver la pregunta es simple, espero que la solución sea similar.

El problema es el siguiente, tengo un campo de texto donde los usuarios pueden enviar comentarios , lo ingreso en un DB y después con una consulta la muestro , hasta hay todo perfecto.

En ellos muchas veces los usuarios quieren incluir una url pero al mostrarlo en la pagina la url se muestra como texto, me gustaría mostrarlo como enlace, pero aviso ¡¡ no puedo meterles ni código html ni bbcode, porque los usuarios son un poco patosillos y muchos de ellos cuando ven código raro directamente cierran el formulario o se lían a eliminar el código porque se pensaran, digo yo, que se les ha escapado alguna tecla, total un caos

Recuerdo que buscando hace años vi una solución, pero no encuentro la dichosa web donde lo encontré y me encuentro perdido.

La función debe ser similar a la que se puede seleccionar al escribir un post en este mismo foro en el apartado Opciones Adicionales - > Convertir URLs automáticamente en enlaces

Alguien me puede pegar un chivatazo ?
__________________
:-) www.topjuegos.es
  #2 (permalink)  
Antiguo 19/05/2008, 11:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda reconocer una url

yo tengo una funcion... pero, luego vemos...
intenta buscando URLIFY PHP .... o incluso con Javascript... suerte!
  #3 (permalink)  
Antiguo 19/05/2008, 12:57
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Ayuda reconocer una url

Código PHP:
function links($x)
    {
    return 
preg_replace(
        array(
        
'/(?(?=<a[^>]*>.+<\/a>)
        (?:<a[^>]*>.+<\/a>)
        |
        ([^="\']?)((?:https?|ftp|bf2|):\/\/[^<> \n\r]+)
        )/iex'
,
        
'/<a([^>]*)target="?[^"\']+"?/i',
        
'/<a([^>]+)>/i',
        
'/(^|\s)(www.[^<> \n\r]+)/iex',
        
'/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)
        (\\.[A-Za-z0-9-]+)*)/iex'
        
),
        array(
        
"stripslashes((strlen('\\2')>0?'\\1<a href=\"\\2\">Descargar (Link Externo)</a>\\3':'\\0'))",
        
'<a\\1',
        
'<a\\1 target="_blank" rel="nofollow">',
        
"stripslashes((strlen('\\2')>0?'\\1<a href=\"http://\\2\"  target=\"_blank\" rel=\"nofollow\">Link Externo</a>\\3':'\\0'))",
        
"stripslashes((strlen('\\2')>0?'<a href=\"mailto:\\0\">\\0</a>':'\\0'))"
            
),
    
$x
    
);
    }

echo 
links("http://www.algunlinksaconvertir.com"); 
Esa funcion la uso aqui www.tilichesgratis.com/blog , pasate y mira como funcionan los links(las imagenes se convierten igual no usan bbcode)

Suerte
  #4 (permalink)  
Antiguo 19/05/2008, 15:03
Avatar de RubenLo  
Fecha de Ingreso: julio-2006
Ubicación: Salamanca , España
Mensajes: 54
Antigüedad: 17 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Ayuda reconocer una url

Lo primero de todo muchas gracias a los dos

pateketrueke ya encontré el post que seguro tenias en mente, tengo que estar haciendo algo mal porque en un principio me devuelve el mismo texto sin formatear la urls, he jugado un poco con la función pero seguro que no lo hago bien

Surfiction genial ¡¡¡ he adaptado un poco tu función y ya esta funcionando, muchas gracias de verdad, por cierto muy interesante tu web ;)

Gracias a los dos ¡¡¡
__________________
:-) www.topjuegos.es
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.
Tema Cerrado




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