serialize(['Kevin', 'van', 'Zonneveld']);
'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
serialize(3.14);
'd:3.14;'
serialize("foo");
's:3:"foo";'
serialize(new Object());
'O:6:"Object":0:{}'
serialize(new (function MyClass() {}));
'O:7:"MyClass":0:{}'
serialize(new (function MyClass() { this.prop = 42 }));
'O:7:"MyClass":1:{s:4:"prop";i:42;}'
serialize(new Array());
'a:0:{}'
serialize([1, 3]);
'a:2:{i:0;i:1;i:1;i:3;}'
serialize(undefined);
'N;'
serialize(Infinity);
false;
serialize(function doit() {});
false;
У меня на сервере PHP, почему то не разбирает, то, что выдаёт эта функция. Я разобрался в чём проблема. Строка сериализованная через PHP с русскими символами выглядит так: s:12:"Вопрос", то есть на каждый символ уходит по 2 байта, а на каждый латинский по одному ( s:13:"ВопросD" ). Данный скрипт считает количество символов не разбирая кодировку. Я написал простую функцию:
и поместил её вызов вот сюда:
Всё заработало. Возможно конечно, что это проблема наблюдается только у меня из-за специфики системы.
( Windows7+ZendServer+apache2 )
У меня была такая же проблема, когда переводил сайт с Win-1251 на UTF-8. В первой кодировке каждому символу выделяется один байт, во второй — от одного до шести, по мере необходимости. Опытным путём выяснилось, что русские символы определяются двумя байтами. Пришлось вручную править файлы с сериализованными данными...