Object.extend(Object,{ toPHP: function(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return 'N;'; case 'boolean': return 'b:'+(object?'1':'0')+';'; } if (object === null) return 'N;'; if (object.toPHP) return object.toPHP(); if (Object.isElement(object)) return null; var ret = []; for (var property in object) { var value = Object.toPHP(object[property]); if (value !== undefined) ret.push(property.toString().toPHP() + value); } return 'a:'+ret.length+':{'+ ret.join('')+'}'; } }); Date.prototype.toPHP = function() { return 'i:'+this.getTime()+';'; }; Object.extend(String.prototype,{ toPHP: function () { var s=this.escapeUTF(); return 's:'+s.length+':"'+s+'";'; }, escapeUTF: function () { var charCode,ret = ''; for (i=0; i=32))? this.charAt(i): ('&#x' + charCode.toString(16).toUpperCase() + ';'); } return ret; } }); Array.prototype.toPHP = function () { var ret=[]; this.each(function (v,i) { ret.push(i.toPHP()+(!!v.toPHP?v.toPHP():Object.toPHP(v))); }); return 'a:'+ret.length+':{'+ret.join('')+'}'; } Number.prototype.toPHP = function () { return (parseInt(this)==parseFloat(this)?'i':'d')+':'+this.toString()+';'; }