Foros del Web » Programando para Internet » PHP »

file_get_contents() con espacios en la url

Estas en el tema de file_get_contents() con espacios en la url en el foro de PHP en Foros del Web. Hola amigos. Tengo un pequeño problema en un php que descarga una imagen remota y la copia al servidor con la función file_get_contents . El ...
  #1 (permalink)  
Antiguo 10/02/2009, 04:57
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
file_get_contents() con espacios en la url

Hola amigos.

Tengo un pequeño problema en un php que descarga una imagen remota y la copia al servidor con la función file_get_contents.

El problema está cuando la dirección de la imagen remota tiene caracteres especiales como espacios en blanco.

Por ejemplo:

Código:
fichero.jpg (OK)
fichero con espacios.jpg (MAL) 
He leído que se debe parsear con "parse_url" para tratar el tema de los espacios en blanco... pero no lo he logrado hacer funcionar.

Código:
$url = $_GET["url"];	
list($protocol, $uri) = split("//", $url);
$rutaDescarga = $protocol . "//" . parse_url($uri);

if  ($contents = @file_get_contents($rutaDescarga)) {
Con este código me da siempre error... si al file_get_contents le paso la $url a pelo me funcionan las url sin espacios... pero las que llevan fallan.

Mil gracias !!!
  #2 (permalink)  
Antiguo 10/02/2009, 06:17
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: file_get_contents() con espacios en la url

probaste con

Código PHP:
urlencode() 
http://es2.php.net/manual/es/function.urlencode.php

Ej:
Código PHP:

$contents 
= @file_get_contents(urlencode($url)); 
  #3 (permalink)  
Antiguo 10/02/2009, 06:22
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: file_get_contents() con espacios en la url

Si lo había probado (y acabo de probarlo de nuevo) y con el urlencode me da:

Failed to open stream: No such file or directory

No me descarga ni los ficheros que no tienen espacios... ¿alguna idea de por donde tirar?
  #4 (permalink)  
Antiguo 10/02/2009, 06:25
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: file_get_contents() con espacios en la url

http://es2.php.net/manual/es/function.rawurlencode.php

y con esta ?
  #5 (permalink)  
Antiguo 10/02/2009, 06:35
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: file_get_contents() con espacios en la url

Tampoco...

He probado de todo pero no tengo forma de hacerlo funcionar.

¿Podría ser algún tipo de configuración del PHP? que no acepte conexiones a servidores remotos con espacios o caracteres extraños?...
  #6 (permalink)  
Antiguo 10/02/2009, 06:42
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: file_get_contents() con espacios en la url

Hola

Sólo quieres descargar la imagen?

Creo que usando CURL lo haría perfectamente.

Saludos
  #7 (permalink)  
Antiguo 10/02/2009, 06:44
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: file_get_contents() con espacios en la url

Por cierto
prueba a guardar la url en una variable e imprimirla con function.urlencode.php a ver que muestra.
  #8 (permalink)  
Antiguo 10/02/2009, 06:46
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: file_get_contents() con espacios en la url

Eppaaaa!!!

Algo curioso.

Si hago un str_replace(" ","%20",$url) ... ¡me funciona!

Algo debe codificar "de más" el urlenconde o el rawurlencode que hace que la url resultante no sea válida.

Lo que tengo que ver es qué caracteres me hacen fallar el file_get_contents y hacer el replace a mano.
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 07:30.