Мне было интересно, может ли кто-нибудь указать мне ресурс, где документируются детали сериализованной строки php. Мне бы хотелось узнать формат / структуру, чтобы я мог написать функцию в VB.NET для сериализации / десериализации.
Благодаря!
Базовая структура выглядит следующим образом:
Скалярные типы:
Булевы сериализуются как:
 b:<i>; 
  где <i> – целое число со значением либо 0 (false), либо 1 (true). 
Целые числа сериализуются как:
 i:<i>; 
  где <i> – целочисленное значение. 
  Поплавки сериализуются как (с d означает double): 
 d:<f>; 
  где <f> – значение поплавка. 
Строки сериализуются как:
 s:<i>:"<s>"; 
  где <i> – целое число, представляющее длину строки <s> , а <s> – строковое значение. 
Специальные типы:
  null просто сериализуется как: 
 N; 
Составные типы:
Массивы сериализуются как:
 a:<i>:{<elements>} 
  где <i> – целое число, представляющее число элементов в массиве, и <elements> нулевые или более сериализованные пары значений ключа: 
 <key><value> 
  где <key> представляет сериализованный скалярный тип и <value> любое значение, которое может быть сериализуемым. 
Объекты сериализуются как:
 O:<i>:"<s>":<i>:{<properties>} 
  где первый <i> представляет собой целое число, представляющее длину строки <s> , а <s> – полное имя класса (имя класса, добавленное с полным пространством имен).  Второй <i> представляет собой целое число, представляющее число свойств объекта.  <properties> представляют собой пары с нулевым числом или более сериализованными именами: 
 <name><value> 
  где <name> представляет собой сериализованную строку, представляющую имя свойства, и <value> любое значение, которое сериализуется. 
  Есть уловка с <name> хотя: 
  <name> представляется как 
 s:<i>:"<s>"; 
  где <i> – целое число, представляющее длину строки <s> .  Но значения <s> различаются по видимости свойств: 
  а.  С общедоступными свойствами <s> – это простое имя свойства. 
  б.  Однако с защищенными свойствами <s> – это простое имя свойства, добавленное с помощью \0*\0 – звездочкой, заключенной в два символа NUL (т.е. chr(0) ). 
  с.  И с частными свойствами <s> – это простое имя свойства, добавленное с помощью \0<s>\0 – <s> , заключенное в два символа NUL , где <s> – это полное имя класса. 
  Есть еще несколько случаев, таких как R:<i>;  , который представляет собой ссылки, которые я здесь не упомянул (потому что я честно не догадывался о его точной работе), но это должно дать вам приличное представление о механизме сериализации PHP. 
  Я нашел эту страницу в phpinternalsbook совершенно полной.  Он также показывает альтернативный формат сериализации для классов, реализующих интерфейс Serializable , а также значение спецификатора формата R