Notice: unserialize(): Error at offset => ' et retour chariot - PHP - Programmation
Marsh Posté le 19-09-2005 à 23:10:50
bon j'ai trouver pour remplacer un retour charriot :
$buffer = strtr($buffer, "\n", "#" ); |
Marsh Posté le 20-09-2005 à 10:18:25
Et si tu faisais un urlencode(serialize(machin)), plutôt?
Marsh Posté le 20-09-2005 à 10:38:55
Y'a toujours eu pas mal de problèmes avec serialize...
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.
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... |
oui loool trop fort, en effet lorsque l'on edit mon post, on voit bien que j'avais mis \n
Marsh Posté le 20-09-2005 à 11:34:20
weed a écrit : et pourquoi utilisé urlencode ?
|
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...
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.
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 !
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