Онлайн php serialize / unserialize: превращает массив PHP в сериализованную строку и, наоборот, разбирает такую строку в читаемый вид. Удобно, когда нужно посмотреть или поправить данные, которые PHP-приложение (WordPress, Bitrix, сессии, кеш) сохранило в базу.
Что такое serialize
Функция serialize() записывает значение PHP любой вложенности в строку, а unserialize() восстанавливает его обратно. Каждое значение начинается с буквы типа, длины строк указываются в байтах.
Буквы типов
| Буква | Тип | Пример |
|---|---|---|
| N | null | N; |
| b | boolean | b:1; |
| i | integer | i:30; |
| d | float | d:1.5; |
| s | string | s:5:"hello"; |
| a | array | a:1:{i:0;s:1:"a";} |
| O | object | O: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'], и получите строку. - Десериализовать — вставьте сериализованную строку и посмотрите её структуру.