Notice: unserialize(): Error at offset => ' et retour chariot

Notice: unserialize(): Error at offset => ' et retour chariot - PHP - Programmation

Marsh Posté le 19-09-2005 à 22:39:29    

lorsque j'essaie de déserialiser un array dont une colonne une simple quote ' dans une chaine de caractère, j'ai le droit à un beau :
 
Notice: unserialize(): Error at offset 2396 of 6336 bytes in c:\program files\easyphp1-8\www\importxml.php on line 14
 
j'ai alors avant de sérialiser, remplacer tous les simples quotes ' par un | (  ) comme ca lorsque je désiaralise, je n'ai plus d'erreur. Apres la serailisation, je reremplace les | par des simples quotes ( )
 
 
En résumé :
 

$tab_resultats[$cpt_bien]["descriptif"] = strtr($buffer, "'", "|" );  
<input type='hidden' name='import' value='".serialize($tab_resultats)."'>
je submite mon tableau à double dimension
$data=unserialize($_POST['import']);


 
Maintenant, je viens de m'apercevoir que lorsque mon descriptif contient un retour chariot, j'ai aussi le droit à un erreur offset ?
 
Que puis je faire ?  
 
Y a - il autre chose que ' et le retour chariot qui pose souci ?  
 
J'utilise PHP4 et je ne peux pas upgrader en php5
 
S'il n'y a pas d'autre caracteres qui pose des soucis, je pourrais peut etre faire la meme chose :
remplacer un caractère spécial comme par exemple # et puis apres le reremplacer apres la désérialisation. Quand pensez vous ?  
 
Quel est le code retour charriot ?
strtr($buffer, <br>, "#" ); ou $buffer = strtr($buffer, eval("<br>", "#" ); ne fonctionnent pas


Message édité par weed le 19-09-2005 à 22:43:07
Reply

Marsh Posté le 19-09-2005 à 22:39:29   

Reply

Marsh Posté le 19-09-2005 à 23:10:50    

bon j'ai trouver pour remplacer un retour charriot :

$buffer = strtr($buffer, "\n", "#" );

Reply

Marsh Posté le 20-09-2005 à 09:49:57    

un retour chariot n'est pas "n" mais "\n"

Reply

Marsh Posté le 20-09-2005 à 10:18:25    

Et si tu faisais un urlencode(serialize(machin)), plutôt?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-09-2005 à 10:38:55    

Y'a toujours eu pas mal de problèmes avec serialize... [:figti]
 
AlphaZone : HFR déconne depuis un moment avec ça, il a bien mis \n. Par contre, autant utiliser str_replace là, c'est plus rapide.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 20-09-2005 à 11:28:57    

skeye a écrit :

Et si tu faisais un urlencode(serialize(machin)), plutôt?


et pourquoi utilisé urlencode ?
 

Citation :

urlencode()  est pratique pour transmettre des informations via une URL. C'est aussi un moyen de passer des informations d'une page à l'autre.


cela me suprend que je puisse utiliser urlencode pour passer d'une page à une autre. Je pensais que c'etait seulement si l'on voulais transmettre en url. Je ne sais pas comment cela va reagir avec les retour chariot mais c'est un truc à essayer en effet.
 

sielfried a écrit :

Y'a toujours eu pas mal de problèmes avec serialize... [:figti]
 
AlphaZone : HFR déconne depuis un moment avec ça, il a bien mis \n. Par contre, autant utiliser str_replace là, c'est plus rapide.


 
oui loool trop fort, en effet lorsque l'on edit mon post, on voit bien que j'avais mis \n

Reply

Marsh Posté le 20-09-2005 à 11:34:20    

weed a écrit :

et pourquoi utilisé urlencode ?
 

Citation :

urlencode()  est pratique pour transmettre des informations via une URL. C'est aussi un moyen de passer des informations d'une page à l'autre.


cela me suprend que je puisse utiliser urlencode pour passer d'une page à une autre. Je pensais que c'etait seulement si l'on voulais transmettre en url. Je ne sais pas comment cela va reagir avec les retour chariot mais c'est un truc à essayer en effet.


 
Parce-que

Citation :

urlencode  retourne une chaîne dont les caractères non alpha-numériques (hormis -_.  ) sont remplacés par des séquences commençant par un caractère pourcentage ( %  ), suivi de deux chiffres hexadécimaux.


 
ça t'évitera tous soucis de ce genre normalement...[:skeye]


Message édité par skeye le 20-09-2005 à 11:34:36

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-09-2005 à 12:04:05    

genial en effet. Je ne savais pas qu'il pouvait encodé tout les caratères non hexa.
 
Je connais le celebre espace qui remplacer par un %20 mais le retour chariot, je ne connaissais pas.

Reply

Marsh Posté le 06-03-2010 à 00:19:28    

hi
 
en fait, on peut utiliser urlencode ou base64_encode
(cf bout de code donné ici : http://issues.unserialize.net/wikk [...] titTableau)
 
aussi utile pour recorrigé / "réparer" un serialize mal enregistré en base de données si erreur de quote ou autre..
(evite de s'embeter a lire la matrice, ou a replacer à la main)
=> http://unserialize.net
 
m'en sert souvent... trop fana des serializes pour mettre en vrac en bdd... (evite de recréer des champs toutes les deux secondes)
 
bye !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed