Функция PHP unserialize

mixed unserialize (string str)

unserialize() принимает одну сериализованную переменную (см. serialize()) и конвертирует её обратно в РНР-значение.Возвращается конвертированное значение, которое может быть integer, float, string, array или object.

Примечание: можно установить callback-функцийю, которая будет вызываться, если неопределённый/undefined класс должен быть инстанциирован в процессе десериализации (для предотвращения получения неполного object "__PHP_Incomplete_Class"). Используйте ваш php.ini, ini_set() или .htaccess-файл для определения 'unserialize_callback_func'. Каждый раз, когда undefined класс должен быть инстанциирован, вызывается эта установка. Для отключения этого просто сделайте эту установку пустой.

Пример unserialize_callback_func

<?php
   $serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';  
   ini_set('unserialize_callback_func','mycallback'); 
   // установить вашу callback_function  
   function mycallback($classname) { 
      // просто включите/include файл, содержащий ваше classdefinition 
      // вы получите $classname для показа того, какое classdefinition необходимо 
   }  
?>

Примечание: в PHP 3 методы не сохраняются при десериализации сериализованного объекта. В PHP 4 это ограничение устранено, и восстанавливаются как свойства, так и методы.См. дополнительно раздел Сериализация объектов в главе Классы и объекты.

Пример unserialize()

<?php
   // Здесь мы используем unserialize() для загрузки данных сессии в
   // массив $session_data из строки, выбранной из БД.
   // Этот пример использует одну из строк, описанных с помощью serialize().
   $conn = odbc_connect ("webdb", "php", "chicken");
   $stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?");
   $sqldata = array ($PHP_AUTH_USER);
   if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) {
      // если выполнение или извлечение не прошло, инициализируется пустой массив
      $session_data = array();
   }
   else {
      // мы не должны иметь сериализованных данных в $tmp[0].
      $session_data = unserialize ($tmp[0]);
      if (!is_array ($session_data)) {
         // если что-то прошло не так, инициализировать пустой массив
         $session_data = array();
      }
   }
?>

См. также serialize()