Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Funcion para crear hipervinculos

Estas en el tema de Funcion para crear hipervinculos en el foro de PHP en Foros del Web. hola amigos buenas tardes, los molesto con una consulta, que ya tenia resuelta pero tuve que cambiar mi maquina, por lo que perdi la info. ...
  #1 (permalink)  
Antiguo 31/01/2015, 13:42
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 6 meses
Puntos: 6
Funcion para crear hipervinculos

hola amigos buenas tardes, los molesto con una consulta, que ya tenia resuelta pero tuve que cambiar mi maquina, por lo que perdi la info.
Alguien podría pasarme alguna función que en cualquier comentario ingresado por los usuarios, si hay un hipervínculo, lo haga activo automáticamente?
Muchas gracias
Saludos
  #2 (permalink)  
Antiguo 31/01/2015, 14:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Funcion para crear hipervinculos

Utiliza una expresión regular y la función preg_replace para realizar los reemplazos respectivos en el texto.

Código PHP:
Ver original
  1. function url($texto){
  2.     $patron  = '/(https?:\/\/)?([a-z]+\.[a-z\d\-_]+\.[a-z\d]{2,6}(\.[a-z\d]{2,6})?([a-z\d\-_\/]+)?)/is';
  3.     return preg_replace($patron, '<a href = "http://$2">$2</a>', $texto);
  4. }
  5.  
  6. echo url('Hola, por favor, visita www.google.com o http://www.yahoo.com. Te esperamos.
  7.  
  8. También puedes ingresar a es.wikipedia.org o a HTTPS://WWW.TERRA.COM/VIDEOS.');

Lo anterior imprime lo siguiente:

Código HTML:
Ver original
  1. Hola, por favor, visita <a href = "http://www.google.com">www.google.com</a> o <a href = "http://www.yahoo.com">www.yahoo.com</a>. Te esperamos.
  2.  
  3. También puedes ingresar a <a href = "http://es.wikipedia.org">es.wikipedia.org</a> o a <a href = "http://WWW.TERRA.COM/VIDEOS">WWW.TERRA.COM/VIDEOS</a>.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 31/01/2015 a las 15:24 Razón: Mejora
  #3 (permalink)  
Antiguo 31/01/2015, 14:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Funcion para crear hipervinculos

hola muchas gracias por la respuesta
pero la función no funciona, valga la redundancia, correctamente
no crea el hypervinculo bien y cuando se ve impreso sale de esta forma :
"http://www.hotmail.com>wwww.hotmail.com
y aparte de no funcionar el enlace, lo redirecciona en la misma pagina
  #4 (permalink)  
Antiguo 31/01/2015, 15:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Funcion para crear hipervinculos

¿Estás seguro de que copiaste bien el código? Porque lo estoy probando y va bien.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 31/01/2015, 16:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Funcion para crear hipervinculos

excelente! ahora si funciona, se ve que habre hecho algo mal antes, ahora funciona perfecto!
mil gracias amigo por tu ayuda
ahora, una pequeña consulta, si el usuario, por ejemplo en lugar de escribir www.direccion.com
escribe http://direccion.com
por lo que probe, no se crea el enlace,
como se podría modificar la función, para que si lo haga?
  #6 (permalink)  
Antiguo 31/01/2015, 17:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Funcion para crear hipervinculos

Sustituye el patrón anterior por este:

Código PHP:
Ver original
  1. $patron  = '/(https?:\/\/)?(([a-z]+\.)?[a-z\d\-_]+\.[a-z\d]{2,6}(\.[a-z\d]{2,6})?([a-z\d\-_\/]+)?)/is';

Ahora también se hará el cambio si es que no está el 'www.'.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 31/01/2015 a las 21:49 Razón: Cambio de símbolos
  #7 (permalink)  
Antiguo 31/01/2015, 17:18
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Funcion para crear hipervinculos

excelente!! igual lo había resuelto de la siguiente forma, que probe y funciona también:

function url($texto){

$patron = '/(https?:\/\/)?([a-z]+\.[a-z\d\-_]+\.[a-z\d]{2,6}(\.[a-z\d]{2,6})?([a-z\d\-_\/]+)?)/is';

return preg_replace($patron, '<a href = "http://$2" target=_blank>$2</a>', $texto);

}

$width= 60;
$break= "<br />\n";
$cut= true;

$a= "hola visita http://hotmail.com muchas gracias";


// le agregue un str_replace substituyendo ese pedacito de texto y funciona
echo url(wordwrap(str_replace("http://", "http://www.", $a), $width, $break, $cut));

mil gracias por tu ayuda y tu paciencia
a tus ordenes, saludos cordiales.
ariel
  #8 (permalink)  
Antiguo 31/01/2015, 17:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Funcion para crear hipervinculos

Lo ideal sería que hagas el cambio solo con una forma y no usando más de una pues se volvería una solución ineficiente, al menos para este caso que no es tan complicado.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, hipervinculos, usuarios
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 17:15.