Serializzare array javascript in formato PHP Versione 2

Scritto Friday 27 March 2009 alle ore 9:22

Avevo già scritto un breve pezzo su come serializzare un array Javascript in formato PHP.

In questo articolo presento alcune migliorie apportate al codice precedente.

  1. /**
  2. * Constrolla se e' un array
  3. */  
  4. function isArray(v)
  5. {
  6.     if(v!= null) {
  7.         return (typeof v == 'object' && v.constructor.toString().indexOf("Array()") != -1);
  8.     }
  9.     else {
  10.         return false;
  11.     }
  12. }
  13.  
  14. /**
  15.  * Serializza Array di javascript come in php
  16.  */
  17. function serializeJsToPhp(jsArray) {
  18.     var arrayLength = 0;
  19.     for(var i=0; i<jsArray.length; i++) {
  20.         if(jsArray[i] != undefined) {
  21.             arrayLength++;
  22.         }
  23.     }
  24.     var phpString = "a:"+arrayLength+":{";
  25.  
  26.     for(var i=0; i<jsArray.length; i++) {
  27.  
  28.         // prefix for integer based arrays
  29.         if(jsArray[i] != undefined) {
  30.             phpString += "i:"+i;
  31.        
  32.             if(!isArray(jsArray[i])) {
  33.                 phpString += ";s:"+jsArray[i].length+":""+jsArray[i]+"";";
  34.             } else {
  35.                 phpString += ";"+serializeJsToPhp(jsArray[i]);
  36.             }
  37.         }
  38.     }
  39.  
  40.     phpString += "}";
  41.     return phpString;
  42. }

Esempi d'uso

  1. var a1 = ["ccc", "dddd"];
  2. var a2 = ["a", "bb", a1,"eeeee"];
  3. document.write(serializeJsToPhp(a1));
  4. document.write("&lt;br&gt;");
  5. document.write(serializeJsToPhp(a2));

Si otterranno le seguenti stringhe:

  1. a:2:{i:0;s:3:"ccc";i:1;s:4:"dddd";}
  2. a:4:{i:0;s:1:"a";i:1;s:2:"bb";i:2;a:2:{i:0;s:3:"ccc";i:1;s:4:"dddd";}i:3;s:5:"eeeee";}

Commenti:

Inserisci il tuo commento