Foros del Web » Programando para Internet » PHP »

Crear hipervinculos dinamicamente

Estas en el tema de Crear hipervinculos dinamicamente en el foro de PHP en Foros del Web. hola amigos, les cuento tengo un formulario con un textarea, en donde se pueden agregar direccion de webs siempre y cuando esten "entre" las etiquetas ...
  #1 (permalink)  
Antiguo 07/05/2004, 17:43
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
Crear hipervinculos dinamicamente

hola amigos, les cuento tengo un formulario con un textarea, en donde se pueden agregar direccion de webs siempre y cuando esten "entre" las etiquetas [a] y [/a] ejemplo:
[a]http://www.algunaparte.com[/a] .........cuando se envia el formulario lo toma un scripts que es el encargado de convertir esas etiquetas a hipervinculos, pero mi problema es que siempre que escribo alguna palabra que contiene la letra "a" me la toma como una direccion.
Código PHP:
$mensaje preg_replace("#[a](.*?){1}[/a]#""<a href=\"$1\" target=\"_blank\"><B>$1</B></A>"$mensaje); 
Desde ya muchas gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #2 (permalink)  
Antiguo 08/05/2004, 10:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El problema es que los caracteres [ y ] son caracteres especiales en las espresiones regulares. Si quieres indicar los caracteres [ y ] tienes que escaparlos con \ , algo como:

$mensaje = preg_replace("#\[a\](.*?){1}\[/a\]#", "<a href=\"$1\" target=\"_blank\"><B>$1</B></A>", $mensaje);

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 08/05/2004, 18:59
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
gracias josemi, lo probe y ese era el error pero en el caso de que un usuario no tan distraido coloque
Cita:
osea la direccion SIN el "http://"
aparece:
http://www.mipagina.com/www.algo.com

por otra parte encontre este codigo:
Código PHP:
function parsearurl($mensaje){

    
$urlBuscarArray = array(
      
"/([^]_a-z0-9-=\"'/])((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si",
      
"/^((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si"
    
);

    
$urlRemplazarArray = array(
      
"\1[url]\2\4[/url]",
      
"[url]\1\3[/url]"
    
);

    
$emailBuscarArray = array(
      
"/([ \n\r\t])([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si",
      
"/^([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si"
    
);

    
$emailRemplazarArray = array(
      
"\1[mail]\2[/mail]",
      
"[mail]\0[/mail]"
    
);

  
$texto preg_replace($urlBuscarArray$urlRemplazarArray$mensaje);
  if (
strpos($texto"@")) {
    
$texto preg_replace($emailBuscarArray$emailRemplazarArray$texto);
  }
  return 
$texto;
  

¿seria asi el uso?
$mensaje = parsear($mensaje);

Desde ya muchas gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #4 (permalink)  
Antiguo 08/05/2004, 21:35
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
si tu funcion se llama parsearurl
deberia ser asi

$mensaje = parsearurl($mensaje);
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #5 (permalink)  
Antiguo 09/05/2004, 18:30
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
perdon escribi rapido y me comi el url, pero asi es como lo hago
Código PHP:
$mensaje parsearurl($mensaje); 
pero me arroja la siguiente advertencia
Cita:
Warning: Unknown modifier ']' in c:\servidor\www\tucu\probando_parser.php on line 24

Warning: Unknown modifier '/' in c:\servidor\www\tucu\probando_parser.php on line 24
la linea 24 vendria a ser esta:
Código PHP:
$texto preg_replace($urlBuscarArray$urlRemplazarArray$mensaje); 
Desde ya muchas Gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #6 (permalink)  
Antiguo 10/05/2004, 19:08
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
sera un error de las expresiones regulares??? alguien sabe algo al respecto???

desde ya muchas gracias!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
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 09:40.