[regexp] serialize unserialize transparent entre php et js :)

serialize unserialize transparent entre php et js :) [regexp] - HTML/CSS - Programmation

Marsh Posté le 10-10-2003 à 12:10:58    

hello
je cherche a faire une fonction qui fasse de la serialisation d'objets à la php en js, et qui puisse aussi les désérialiser...
il faut que la syntaxe d'objet sérialisé soit identique...
les objets que je sérialiserai ne sont que des tableaux à clé basiques, du style:
 
tab["zob"] = "pouet"
 
ou tab[2] = 10;
 
ou tab["miam"] = 12.30;
 
 
par exemple avec ce code:
 
<?
$zob["macle"] = "va\"leur";
$zob["monchiffre"] = 21;
$zob["monfloat"] = 5.5;
 
echo serialize($zob);
?>
 
 
 
j'obtiens ça:
 
a:3:{s:5:"macle";s:7:"va"leur";s:10:"monchiffre";i:21;s:8:"monfloat";d:5.5;}
 
 
 
 
j'aimerais appliquer une regexp pour désérialiser le tout simplememnt;
 
si vous avez une idée ou un ptit coup de main ?

Reply

Marsh Posté le 10-10-2003 à 12:10:58   

Reply

Marsh Posté le 10-10-2003 à 14:33:09    

up

Reply

Marsh Posté le 10-10-2003 à 15:23:50    

k666 a écrit :

j'aimerais appliquer une regexp pour désérialiser le tout simplememnt;

Pourquoi donc ? En js2, uneval() se charge de faire ce que tu veux. Le but est donc de filer la chaîne de sortie à eval() pour qu'il ressorte un objet.  
 
Pour coder uneval(), tu boucles sur tes propriétés (for ... in), tu créés une chaîne qui représente un objet littéral (comme tu as mis), et hop !
 
eg
 
var str = '';
function uneval(obj)
{
  str += '{';
  for (i in obj)
  {
    if (typeof(obj[i]) == 'number' || typeof(obj[i]) == 'string')
      str += i + ':' + obj[i];
    else
      str += i + uneval(obj[i]);
  }
  str += '}';
}
 
(non testé)

Reply

Marsh Posté le 10-10-2003 à 15:25:37    

Effectivement, j'ai même oublié les virgules :D
 
pour ton zob, ça donnerait :
{
  macle : "va\"leur",
  monchiffre : 21,
  monfloat : 5.5
}
 

Reply

Marsh Posté le 10-10-2003 à 17:09:22    

merci bieng youdontcare :) je vais me pencher sur ta méthode pour essayer de m'en tenir parfaitement à la syntaxe de php !
en effet on veut faire le plus transparent possible pour travailler serverside ou clientside et c pour ca qu'on fait des trucs tordus comme ca ... mais vu que php est plus lourd a modifier on prefere que JS s'adapte a lui que l'inverse !
merci pour ton codax :) je l'intègrerai et pondrai la version finale:jap:

Reply

Sujets relatifs:

Leave a Replay

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