Foros del Web » Programando para Internet » PHP »

RESUELTO: reconocer links y agregarles http:// al principio

Estas en el tema de RESUELTO: reconocer links y agregarles http:// al principio en el foro de PHP en Foros del Web. Les vengo con una burrada, y esto es porque jamas me amigo con las expresiones regulares. Tengo estas dos funciones: Código PHP: // @$texto function  reconocer_links ...
  #1 (permalink)  
Antiguo 03/01/2011, 09:29
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Sonrisa RESUELTO: reconocer links y agregarles http:// al principio

Les vengo con una burrada, y esto es porque jamas me amigo con las expresiones regulares.

Tengo estas dos funciones:

Código PHP:
// @$texto
function reconocer_links($texto)
{
    
// TODO: acortar el texto de enlace. Que no pase de la primera barra /
    
$nuevo_texto ' ' $texto
    
$nuevo_texto 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>'$nuevo_texto); 
    
$nuevo_texto preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i"'\1<a href="http://\2.\3" target="_blank">\2.\3</a>'$nuevo_texto); 
    
$nuevo_texto preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i""\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"$nuevo_texto); 
    
$nuevo_texto substr($nuevo_texto1); 
        
    return 
$nuevo_texto
}

// @$texto
function fix_link($texto)
{
    if ( 
strpos($texto"http://") === false )    
        return 
"http://".$texto;
    return 
$texto;    

La primera la tome del fro y sirve para reconocer links en un trozo de texto. La segunda la ideá yo, y agrega http:// a los links que no tienen ese prefijo. Lo cual es util porque si no el servidor agrega el su nombre al principio del link y quedan enlaces imposibles:

Código HTML:
Ver original
  1. http://www.estudiodigital.es/galeria/albums/ver/31/www.flickr.com/www.flickr.com/www.flickr.com/www.flickr.com/tamarit

La cuestion es que no me sirven para trabajar en conjunto, porque la primera corrige parrafos enteros, mientras que la segunda solo corrige un link en particular. Y estoy un tanto disperso. Que solución me recomiendan, que no sea necesariamente de expresiones regulares, para agregar http:// a los links del parrafo que no lo tienen? (modificar la reg exp sería lo mejor, claro)

Saludos!

Última edición por mayid; 03/01/2011 a las 09:45 Razón: RESUELTO!
  #2 (permalink)  
Antiguo 03/01/2011, 09:45
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: reconocer links y agregarles http:// al principio

NADA, NADA. La primer funcion hace bien lo que quiero. Y la segunda también. No es necesario que trabajen juntas y es solo que no había aplicado la segunda.

RESUELTO.
  #3 (permalink)  
Antiguo 03/01/2011, 09:45
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: reconocer links y agregarles http:// al principio

En tu lugar utilizaria DOMDocument + DOMXpath.

Saludos.
  #4 (permalink)  
Antiguo 03/01/2011, 10:00
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: RESUELTO: reconocer links y agregarles http:// al principio

Gracias, pero por que? Las librerias a veces necesitan instalarse y yo no se hacerlo en servidor remoto. Y ademas, si una simple funcion puede cumplir la tarea... por qué estudiar una libreria?

Etiquetas: links, principio, reconocer, https
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 00:56.