BL2.ru

Онлайн php serialize unserialize online

Онлайн php serialize / unserialize: превращает массив PHP в сериализованную строку и, наоборот, разбирает такую строку в читаемый вид. Удобно, когда нужно посмотреть или поправить данные, которые PHP-приложение (WordPress, Bitrix, сессии, кеш) сохранило в базу.

Что такое serialize

Функция serialize() записывает значение PHP любой вложенности в строку, а unserialize() восстанавливает его обратно. Каждое значение начинается с буквы типа, длины строк указываются в байтах.

Буквы типов

БукваТипПример
NnullN;
bbooleanb:1;
iintegeri:30;
dfloatd:1.5;
sstrings:5:"hello";
aarraya:1:{i:0;s:1:"a";}
OobjectO:4:"User":1:{s:4:"name";s:3:"Bob";}

Пример

Массив ['name' => 'Привет', 'age' => 30, 'admin' => true, 'x' => null, 'k' => 1.5] превращается в:

a:5:{s:4:"name";s:12:"Привет";s:3:"age";i:30;s:5:"admin";b:1;s:1:"x";N;s:1:"k";d:1.5;}

Обратите внимание: s:12 у слова «Привет» — 6 букв, но 12 байт в UTF-8.

Полезно знать

  • Длина в байтах. Если поменять текст в строке вручную и не исправить длину, unserialize вернёт false. Частая беда при поиске-замене домена в дампе базы WordPress.
  • Смена кодировки (cp1251 → UTF-8) ломает сериализованные строки по той же причине.
  • Безопасность. Никогда не вызывайте unserialize() для данных от пользователя: строка с O: создаст объект любого класса, и его магические методы (__wakeup, __destruct) могут выполнить чужой код — это уязвимость PHP Object Injection. Если без этого не обойтись — unserialize($s, ['allowed_classes' => false]).

JSON как альтернатива

Для обмена данными и хранения лучше json_encode() / json_decode(): формат читается любым языком, не создаёт объекты и не зависит от длины в байтах. serialize нужен, когда важно сохранить объекты PHP и различие int/float/null.

Как пользоваться страницей

  • Сериализовать — введите массив в синтаксисе PHP, например [1 => 'a', 'key' => 'value'], и получите строку.
  • Десериализовать — вставьте сериализованную строку и посмотрите её структуру.