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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * Constrolla se e' un array */ function isArray(v) { if(v!= null) { return (typeof v == 'object' && v.constructor.toString().indexOf("Array()") != -1); } else { return false; } } /** * Serializza Array di javascript come in php */ function serializeJsToPhp(jsArray) { var arrayLength = 0; for(var i=0; i<jsarray.length; i++)="" {<br=""> if(jsArray[i] != undefined) { arrayLength++; } } var phpString = "a:"+arrayLength+":{"; for(var i=0; i<jsarray.length; i++)="" {<="" p=""> // prefix for integer based arrays if(jsArray[i] != undefined) { phpString += "i:"+i; if(!isArray(jsArray[i])) { phpString += ";s:"+jsArray[i].length+":""+jsArray[i]+"";"; } else { phpString += ";"+serializeJsToPhp(jsArray[i]); } } } phpString += "}"; return phpString; } |
Esempi d’uso:
1 2 3 4 5 |
var a1 = ["ccc", "dddd"]; var a2 = ["a", "bb", a1,"eeeee"]; document.write(serializeJsToPhp(a1)); document.write("<br>"); document.write(serializeJsToPhp(a2)); |
Si otterranno le seguenti stringhe:
1 2 |
a:2:{i:0;s:3:"ccc";i:1;s:4:"dddd";} 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";} |