Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Link con php

Estas en el tema de Link con php en el foro de PHP en Foros del Web. Hola tengo esta funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function textToLink ( $subject ) {         $data = array ( ) ...
  #1 (permalink)  
Antiguo 23/11/2012, 15:21
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Link con php

Hola tengo esta funcion:

Código PHP:
Ver original
  1. function textToLink($subject){
  2.         $data = array();
  3.         $pattern = "/(?i)\b(((http|https|ftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
  4.         $text = preg_replace($pattern, "<a href=\"$1\" target=\"_blank\">$1</a>", $subject);
  5.         $text = str_replace("href=\"www.","href=\"http://www.",$text);
  6.         return $text;
  7.     }

Esa funcion anda bien de esta manera

Código PHP:
Ver original
  1. $subject = 'link1 http://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  2.             link2 www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  3.             link3 https://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  4.             link4 ftp://youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  5.                        link5 snipplr.com/view/64247/';
  6. $texto = textToLink($subject);

Funciona bien para los 4 primeros links, pero para el 5 retorna

Código HTML:
Ver original
  1. <a href="snipplr.com/view/64247/" target="_blank">snipplr.com/view/64247/</a>
y necesito que me retorne

Código HTML:
Ver original
  1. <a href="http://snipplr.com/view/64247/" target="_blank">snipplr.com/view/64247/</a>

He tratado con varias expresiones regulares que me verifican si existe un a href sin http, ftp o https, pero a la hora de remplazarlo no funciona como espero

Código PHP:
Ver original
  1. preg_replace('/(?i)\b(<a href="[^http:\/\/]|[^https:\/\/]|[^ftp:\/\/][a-z0-9.\-]+[.]")/',"<a href=\"http://$1\" target=\"_blank\">$1</a>",$text)

Hay alguna sugerencia de como hacerlo?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #2 (permalink)  
Antiguo 06/12/2012, 12:13
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

Hola amigo no podra ser por que en el link 5 no indicaste http://

Código PHP:
Ver original
  1. $subject = 'link1 http://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  2.            link2 www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  3.            link3 https://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  4.            link4 ftp://youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  5.            link5 snipplr.com/view/64247/';

deberia de ser

Código PHP:
Ver original
  1. $subject = 'link1 http://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  2.            link2 www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  3.            link3 https://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  4.            link4 ftp://youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  5.            link5 http://snipplr.com/view/64247/';

saludos
  #3 (permalink)  
Antiguo 06/12/2012, 12:22
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Link con php

Cita:
Iniciado por jonni09lo Ver Mensaje
y necesito que me retorne

Código HTML:
Ver original
  1. <a href="http://snipplr.com/view/64247/" target="_blank">snipplr.com/view/64247/</a>

He tratado con varias expresiones regulares que me verifican si existe un a href sin http, ftp o https, pero a la hora de remplazarlo no funciona como espero

Código PHP:
Ver original
  1. preg_replace('/(?i)\b(<a href="[^http:\/\/]|[^https:\/\/]|[^ftp:\/\/][a-z0-9.\-]+[.]")/',"<a href=\"http://$1\" target=\"_blank\">$1</a>",$text)

Hay alguna sugerencia de como hacerlo?

Saludos
Hola gracias por la respuesta, pero precisamente eso es lo que necesito, que a la hora de crear el <a href=""> el link que no tenga http:// se lo coloque ya que

Código PHP:
Ver original
  1. function textToLink($subject){
  2.         $data = array();
  3.         $pattern = "/(?i)\b(((http|https|ftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
  4.         $text = preg_replace($pattern, "<a href=\"$1\" target=\"_blank\">$1</a>", $subject);
  5.         $text = str_replace("href=\"www.","href=\"http://www.",$text);
  6.         return $text;
  7.     }

reconoce los links con o sin http://, si haces las pruebas con esta funcion y pasas los 5 link te daras cuenta que todos se vuelven enlaces, pero el 5 como no tiene http:// no funciona como debe ser


Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 06/12/2012, 12:27
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

te entendi mal entonces , entonces una cosa por que no pasas los links a un array y ya compruebas en cada valor si existe o no http o lo que dessees con preg_match y si no existe se lo pones

con:

array
preg_match
foreach

deberias poder realizarlo
  #5 (permalink)  
Antiguo 06/12/2012, 12:35
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Link con php

Podría funcionar si supiera que siempre van a colocar links, pero el problema es que no siempre puede haber link, muchas veces simplemente hay solo texto, asi que no puedo hacer eso, solo puedo pasar un string y que la misma funcion haga esa verificacion y genere ella misma los links que necesito.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 06/12/2012, 12:40
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

ok creo que ahora te entendi tu tienes una caja de texto donde el usuario puede o no poner liks comentarios etc y quieres automaticamente se generen los lnk s tal y como lo hace por ejemplo forosdelweb verdad?
  #7 (permalink)  
Antiguo 06/12/2012, 12:47
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Link con php

Cita:
Iniciado por webankenovi Ver Mensaje
ahora me has desconcertado con lo que quieres hacer , por que la duda era que el link 5 no se generaba el link con http:// y con un array y preg_match puedes hacerlo ahora si no siempre escriben links la pregunta que te hago es ¿que quieres hacer con esos strings ? pon un ejemplo
Por Dios donde tengo la cabeza, lo siento mucho ando un poco asi que lo siento xD

Mira lo que tengo es un sistema de comentarios, y entonces lo que yo hago es que si el usuario escribe un comentario y este tiene algun link, este funcione perfectamente, asi como hacen normalmente facebook o gmail, por eso te dije que no podia hacer lo del array, porque es un string que viene de lo que escribio el usuario y por ende, no siempre puede haber links, asi que uso esa funcion pero tiene ese pequeño bug, cuando el link viene sin http y no lo he podido arreglar, y mas aun que soy un poco torpe con las expresiones regulares

espero haberme explicado bien el contexto de lo que quiero hacer saludos y gracias
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 06/12/2012, 12:51
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

ok ya te entendi modifique el mensaje para decirtelo pero parece que no lo viste por que me estabas escribiendo jejjeje

podrias probar buscando .algo .com .es etc...

no se digamos que un link sin http:// minimo va allevar un .algo
  #9 (permalink)  
Antiguo 06/12/2012, 12:56
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Link con php

Cita:
Iniciado por webankenovi Ver Mensaje
ok ya te entendi modifique el mensaje para decirtelo pero parece que no lo viste por que me estabas escribiendo jejjeje

podrias probar buscando .algo .com .es etc...

no se digamos que un link sin http:// minimo va allevar un .algo
jejeje, no has usado la funcion que tengo verdad?? :P

Si usas esa funcion veras que

Código PHP:
Ver original
  1. $subject = 'link1 http://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  2.            link2 www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  3.            link3 https://www.youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  4.            link4 ftp://youtube.com/watch?v=CkSdiBltgYo&feature=fvwrel<br>
  5.            link5 snipplr.com/view/64247/';

todos los convierte en links, asi tenga o no tenga http, pero el problema radica es precisamente, que a la hora de generar el <a href="">
el ultimo link que a pesar de ser un link y la funcion lo reconozca como tal, no le esta añadiendo el http y por ende no esta funcionado...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #10 (permalink)  
Antiguo 06/12/2012, 13:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

jejej no no la he probado , la probare y ya te cuento , es que entendi mal el problema desde el principio error mio mia culpa .
  #11 (permalink)  
Antiguo 06/12/2012, 13:17
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Link con php

lo veo complicado , haber

la solucion que veo es hacer un explode e ir verificando palabra por palabra y segun el tipo de link hacer el reemplazo correspondiente , no se si me entiendes

Última edición por webankenovi; 06/12/2012 a las 16:17

Etiquetas: link
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 22:05.