Foros del Web » Programando para Internet » PHP »

urlencode() me "jode" los enlaces externos

Estas en el tema de urlencode() me "jode" los enlaces externos en el foro de PHP en Foros del Web. buenas, estoy usando urlencode() para formar de manera correcta enlaces que provienen de una BD (para que el HTML Validator de Tidy me ponga el ...
  #1 (permalink)  
Antiguo 21/07/2006, 11:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
urlencode() me "jode" los enlaces externos

buenas, estoy usando urlencode() para formar de manera correcta enlaces que provienen de una BD (para que el HTML Validator de Tidy me ponga el iconito verde de OK en vez del triangulito amarillo de alertas ñ_ñ) pero resulta que ahora los enlaces pasan de ser:
Código:
<a href="http://www.ccre.org/">ir&nbsp;al&nbsp;sitio</a>
para ser:
Código:
<a href="http%3A%2F%2Fwww.ccre.org%2F">ir&nbsp;al&nbsp;sitio</a>
y por tanto se intenta ubicar "el archivo" dentro de mi dominio:
Código:
http://localhost/carpetita/http%3A%2F%2Fwww.ccre.org%2F
Se puede solucionar o existe otra función que me "encodee" todo salvo el http:// y el dominio?
__________________
...___...
  #2 (permalink)  
Antiguo 21/07/2006, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Es que el URLencode() lo debes aplicar sólo a tus variables ..

Código:
<a htref="http://www.nose.tal/nose.php?parametro=<? echo urlencode($variable) ?>">ir a ...</a>
Y así por separado con todas tus datos de los parámetros que pasas por el URL en ese link.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/07/2006, 11:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Claro, pasa que la base de datos que contiene los enlaces ya está armada y alimentada. Por eso decía.

Puse de ejemplo http://www.ccre.org/, pero podría haber sido http://www.bcn.es:8885/iula/owa/IULA_PUBLIC.MenuInici?lang=castella&us=1&ti=520

tal vez haciéndole un split() (el split es de ASP, no me acuerdo cuál es en php pero creo que... ¿explode()?) por el signo "?" y aplicarle el urlencode a el último índice del array? Lo ves viable?
__________________
...___...
  #4 (permalink)  
Antiguo 21/07/2006, 11:56
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
ya haz intentado utilizar el urldecode()?

me refiero a que usas el urlencode() para verificar y luego el urldecode() para mostrar
  #5 (permalink)  
Antiguo 21/07/2006, 12:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Al Zuwaga
Claro, pasa que la base de datos que contiene los enlaces ya está armada y alimentada. Por eso decía.

Puse de ejemplo http://www.ccre.org/, pero podría haber sido http://www.bcn.es:8885/iula/owa/IULA...la&us=1&ti=520

tal vez haciéndole un split() (el split es de ASP, no me acuerdo cuál es en php pero creo que... ¿explode()?) por el signo "?" y aplicarle el urlencode a el último índice del array? Lo ves viable?
En ese caso te recomiendo usar:

parse_url()
www.php.net/parse_url

ahí desglosas tu URL dado fácilmente. En "query" (indice del array entregado) tienes tu "query string".

En los comentarios de los usuarios de esa función tienes muchas funciones útiles .. por ejemplo:

Cita:
scott a t connerly d o t net
06-Mar-2005 09:34
re: <b>osfist at yahoo dot com</b>'s http_implode function.
Here is a companion function for that:
Código PHP:
  function http_explode($stringInput) {
   if (! 
is_string($stringInput))
     return 
false;
   
$arr_query=NULL;
   
$args=explode('&',$stringInput);
   foreach(
$args as $arg) {
     
$parts=explode('=',$arg);
     
$arr_query[$parts[0]]=$parts[1];
   } return 
$arr_query;
  } 
Esa en concreto va al grano .. al "query string" .. lo despedaza y monta un array para que le pases un bucle foreach() aplicando tu urlencode() función (por decir una forma ..) y montes tu "query string" nuevamente concatenando las partes que vas obteniendo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 21/07/2006, 14:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Disculpen, no había visto las respuestas antes.

Finalmente lo hice así:

Código PHP:
str_replace("&""&amp;",$url); 
ya que el único caracter (hasta el momento) que me estaba jodiendo era el &
__________________
...___...
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:45.