PHP serialize і unserialize онлайн
Розбирає рядок serialize у читабельну структуру й збирає назад. Обʼєкти не створюються.
Читає дамп serialize, який неможливо прочитати очима
Рядок на кілька кілобайт із вкладеними масивами й порахованими довжинами байтів не читається, саме тому цей інструмент існує. Вставляєте значення з колонки бази чи з сесії, отримуєте нормальну структуру PHP-масиву. Працює і у зворотний бік: збирає serialize із коду масиву.
serialize() перетворює значення в рядок, де записані тип, довжина і саме значення кожного елемента: s:5:"hello" це рядок довжиною пʼять байтів. Довжина в байтах, а не символах, тому «привіт» дасть s:12, і саме тут ламаються дампи після зміни кодування.
$data = ['id' => 427, 'tags' => ['php', 'laravel']];
$packed = serialize($data);
// a:2:{s:2:"id";i:427;s:4:"tags";a:2:{i:0;s:3:"php";i:1;s:7:"laravel";}}
// ВАЖЛИВО: завжди забороняйте класи для чужих даних
$back = unserialize($packed, ['allowed_classes' => false]);
unserialize() без allowed_classes створює обʼєкти з рядка й викликає їхні магічні методи: це класичний вектор RCE. Цей інструмент завжди працює в режимі allowed_classes: false, і у вашому коді для будь-яких зовнішніх даних має бути так само. Для даних із мережі краще json_decode.
Що питають про цей інструмент
Найчастіша причина: довжини байтів не збігаються зі вмістом. Так буває, коли дамп проходив через редактор, який змінив кодування або переноси рядків, або коли рядок обрізала колонка бази. Інструмент показує позицію байта, де структура зламалась; дивіться, що стоїть перед нею.
Ні. Розбір відбувається у браузері на JavaScript, який реалізує той самий формат. Можете відкрити інструмент, вимкнути інтернет, і він продовжить працювати. Це важливо, бо в serialize вставляють вміст сесій і колонок із бойових баз.
JSON для всього, що виходить за межі вашого PHP: API, черги, обмін із фронтендом, кеш, який читають інші сервіси. serialize лишається лише там, де потрібно зберегти типи PHP точно і дані ніколи не покидають застосунок. На практиці це майже завжди означає JSON.
Розбирати так: ви побачите імʼя класу і його властивості. Створювати обʼєкти інструмент не буде, працює як allowed_classes: false, тому магічні методи не викликаються. Для обʼєктів із бойових даних це єдиний безпечний режим.