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.
- /**
- * 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++) {
- if(jsArray[i] != undefined) {
- arrayLength++;
- }
- }
- var phpString = "a:"+arrayLength+":{";
- for(var i=0; i<jsArray.length; i++) {
- // 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
- 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:
- 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";}