Foros del Web » Programando para Internet » PHP »

unserialize con caracteres escapados

Estas en el tema de unserialize con caracteres escapados en el foro de PHP en Foros del Web. Buenas amigos, estoy teniendo un problema al usar la funcion unserialize si el string tiene un caracter escadado: En la base esta almacenado de este ...
  #1 (permalink)  
Antiguo 29/09/2013, 14:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
unserialize con caracteres escapados

Buenas amigos, estoy teniendo un problema al usar la funcion unserialize si el string tiene un caracter escadado:

En la base esta almacenado de este modo:

a:3:{i:0;s:23:"Transfert Hotel in/out.";i:1;s:51:"Dîner à la carte avec des boissons et des desserts.";i:2;s:32:"L\'access bancarelle numerate.";}

El error:
Message: unserialize() [function.unserialize]: Error at offset 101 of 147 bytes


Lo más curioso es que si le hago un var_dump al array antes de pasarlo por unserialize me devuelve bien:

Código PHP:
Ver original
  1. var_dump(stripslashes($tour_select->incluye));
  2.  
  3. string(145) "a:3:{i:0;s:23:"Transfert Hotel in/out.";i:1;s:51:"Dîner à la carte avec des boissons et des desserts.";i:2;s:32:"L'access bancarelle numerate.";}"



Pero cuando lo paso por unserialize:

Código PHP:
Ver original
  1. var_dump(unserialize($tour_select->incluye));
  2.  
  3. bool(false)


Bueno, espero que sea una boludez, intenté con varios metodos para escapar la comilla simple pero termino con el mismo problema.

Gracias!
Gustav.
  #2 (permalink)  
Antiguo 29/09/2013, 19:29
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: unserialize con caracteres escapados

no la escapes tranformala antes de enviarla por unzerialise.

lo que hay que hacer es reconvertirla cuando la mandes al insert o updae.

ejemplo:
L\'access lo conviertes a L\-_-access

y haces una funcion que reempla ce los -_- por '
ejemplo
Código PHP:
Ver original
  1. function conv($data){
  2. replace("-_-","'",$data);
  3. return $data;
  4. }
  5. $data=" L\-_-access";
  6. echo conv($data); // resultado  L\'access

Etiquetas: caracteres, select, unserialize
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 15:11.