Foros del Web » Programando para Internet » PHP »

echo me añade " " al final del string

Estas en el tema de echo me añade " " al final del string en el foro de PHP en Foros del Web. Hola a todos Estoy desarrollando un servicio web que devuelve un objeto en JSON al cliente en funcion de la informacion que solicite. En el ...
  #1 (permalink)  
Antiguo 02/05/2010, 14:20
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
echo me añade " " al final del string

Hola a todos

Estoy desarrollando un servicio web que devuelve un objeto en JSON al cliente en funcion de la informacion que solicite. En el servicio web tengo un switch con 3 opciones, en cada una se hacen cosas diferentes, pero siempre con el mismo patron:

1-analizar informacion transmitida en la URL
2-Sacar/actualizar informacion de la base de datos
3-Construir respuesta en formato JSON
4-Enviar la respuesta a traves de un echo $respuesta

Para las tres primeras opciones del switch no hay problema. Pero para la tercera, y ultima que he desarrollado, el echo me añade el solo un espacio en blanco al final, por lo que me llega al cliente: [los guiones los puse yo para que vierais el espacione blanco]

------{"objeto JSON":"perfectamente parseado"} ---------

Teneis idea de por que motivos puede estar añadiendome el echo el espacio en blanco (que me estropea la decodificacion del obejto JSON)??

Tengo que solucionar esto del lado del sevidor, es decir no vale como solucion que el cliente quite el ultimo caracter de la respuesta ni cosas asi.

Saludos a todos
  #2 (permalink)  
Antiguo 02/05/2010, 15:22
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: echo me añade " " al final del string

No te sirve con trim()??

Código PHP:
echo trim($respuesta); 
Saludos
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 02/05/2010, 16:46
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: echo me añade " " al final del string

No, ya probe a usar el trim() tanto en el lado del cliente como en el del servidor y nada. Es como si el espacio ese en blanco fuese parte del objeto y no soy capaz a quitarlo. Lo que no entiendo es el porqué de que se añada, ya que en la otras opciones del switch no ocurre.
  #4 (permalink)  
Antiguo 02/05/2010, 18:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: echo me añade " " al final del string

pues sin ver el codigo... es muy dificil de adivinar...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/05/2010, 19:41
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: echo me añade " " al final del string

$respuesta='{"Nombre":"las dos setas","numero de votos":23,"valoraciones":{"staff":10,"position":10 ,"fun_factor":10,"atmospher":10,"value":10,"facili ties":10,"cleanliness":10}}';

lo devuelo al cliente mediante un

Código PHP:
echo $respuesta
El cliente esta esperando con una sesion CURL:

Código PHP:
$ch curl_init();
$tipo="JSON";
curl_setopt($chCURLOPT_TIMEOUT10);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_HTTPHEADER, array ('Accept: '.$tipo));

$respuesta curl_exec($ch); 
Y cuando se pone a decodificar el JSON con

Código PHP:
$respuesta=json_decode($respuesta); 
Pues no sale nada, y eso es debido a que la sesion CURL me introduce un espacio en blanco despues del string, eso lo comprobe al hacer un echo+terminadores tal que:


Código PHP:
echo "------------".trim($respuesta)."-----------------"
y aun asi por el navegador me sale:

------------{"Nombre":"las dos setas","numero de votos":23,"valoraciones":{"staff":10,"position":10 ,"fun_factor":10,"atmospher":10,"value":10,"facili ties":10,"cleanliness":10}} -----------------

Donde si os fijais sigue habiendo un hueco en blanco [ 10}} --- ]

Las conclusiones que saco es que la sesion CURL introduce ese maldito espacio al transimitir el objeto y cuando llega al cliente es como si fuera parte del objeto y no soy quien a eliminarlo.


Lo que mas me mosquea es que en el servicio web tengo otros 2 servicios mas, que hacen la misma tarea, componer el objeto JSON y enviarlo a traves de un echo al mismo cliente, y en ninguno de los dos primero me da problemas la sesion curl :S

La verdad es que es un poco raro, os ha pasado a alguno una cosa parecida?? o se os ocurre que tipo de funciones pueden estar incorporando un espacio en blanco adicional??

saludos a todos
  #6 (permalink)  
Antiguo 02/05/2010, 19:44
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: echo me añade " " al final del string

***No se que paso que se me corto medio mensaje, aqui va todo****



El tema es que el codigo son mas de 500 lineas, pero la parte importante es la siguiente:

Yo creo un obejto JSON tal que:


Código PHP:
$respuesta='{"Nombre":"las dos setas","numero de votos":23,"valoraciones":{"staff":10,"position":10 ,"fun_factor":10,"atmospher":10,"value":10,"facili ties":10,"cleanliness":10}}'
lo devuelo al cliente mediante un


Código PHP:
echo $respuesta
El cliente esta esperando con una sesion CURL:


Código PHP:
$ch curl_init();
$tipo="JSON";
curl_setopt($chCURLOPT_TIMEOUT10);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_HTTPHEADER, array ('Accept: '.$tipo));

$respuesta curl_exec($ch); 
Y cuando se pone a decodificar el JSON con

Código PHP:
$respuesta=json_decode($respuesta);
Pues no sale nada, y eso es debido a que la sesion CURL me introduce un espacio en blanco despues del string, eso lo comprobe al hacer un echo+terminadores tal que:


Código PHP:
echo "------------".trim($respuesta)."-----------------"
y aun asi por el navegador me sale:

------------{"Nombre":"las dos setas","numero de votos":23,"valoraciones":{"staff":10,"position":10 ,"fun_factor":10,"atmospher":10,"value":10,"fac ili ties":10,"cleanliness":10}} -----------------

Donde si os fijais sigue habiendo un hueco en blanco [ 10}} --- ]

Las conclusiones que saco es que la sesion CURL introduce ese maldito espacio al transimitir el objeto y cuando llega al cliente es como si fuera parte del objeto y no soy quien a eliminarlo.


Lo que mas me mosquea es que en el servicio web tengo otros 2 servicios mas, que hacen la misma tarea, componer el objeto JSON y enviarlo a traves de un echo al mismo cliente, y en ninguno de los dos primero me da problemas la sesion curl :S

La verdad es que es un poco raro, os ha pasado a alguno una cosa parecida?? o se os ocurre que tipo de funciones pueden estar incorporando un espacio en blanco adicional??

saludos a todos
  #7 (permalink)  
Antiguo 03/05/2010, 09:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: echo me añade " " al final del string

En tu servicio web, no cierres el parser de PHP ya que es probable que los espacios los tengas después del ?> así que solo dejalo así:
Código PHP:
Ver original
  1. <?php
  2. // stuff

Sin el ?> ya que no es necesario.

Saludos.
  #8 (permalink)  
Antiguo 03/05/2010, 14:33
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: echo me añade " " al final del string

He probado a quitarlo pero sigue introduciendome el espacio ese. Pero lo mas seguro es que vayan por ahi los tiros, tendre mal estructurado el codigo y por algun lado me esta metiendo el espacio ese.

¿Se os ocurren otros errores frecuentes de este tipo?

Saludos y muchas gracias
  #9 (permalink)  
Antiguo 03/05/2010, 14:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: echo me añade " " al final del string

pues es extraño, que yo sepa... porque acabo de hacer la prueba, el parser sabe que hacer con los espacios de una cadena JSON...

Código PHP:
<?php
$foo 
'

{
  "Nombre":
  "las dos setas", 
  "numero de votos":
  23,
  "valoraciones":
  {
    "staff":
    10,
    "position":
    10 ,
    "fun_factor":
    10,
    "atmospher":
    10,
    "value":
    10,
    "facili ties":
    10,
    "cleanliness":
    10
  }
}

'
;

var_dump(json_decode($foo));
y aún así me ha funcionado...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 03/05/2010, 15:07
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: echo me añade " " al final del string

Bueno ya lo resolvi, la madre k lo pario!!!
Resulta que el problema estaba en que el servicio web estaba preparado para recibir una url en la que el ultimo parametro indicaba el formato a devolver, es decir ..../find.js
Pero como decidi finalmente trabajar siempre con JSON pues suprimi ese parametro de los clientes, pero el servidor seguia intentando analizar que habia despues del punto, al no encontrar nada creaba un espacio en blanco que no se por que huevos me lo añadia en la transmision final.

Pero vamos, que fue volver a poner el .js en la llamada al servicio web y todo solucionado. La verdad es que sin el codigo completo lo teniais realmente dificil para acertar que ocurria.

Una vez mas muchas gracias por vuestro tiempo e interes

Saludos a todos

Etiquetas: echo, final, string
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 03:02.