PHP функция serialize, возможные проблемы

PHP функция serialize, возможные проблемы

Функция serialize() возвращает строковое представление массива или объекта. Использование serialize для объекта сохранит имя класса и все его свойства, однако методы не сохраняются.

Для того, чтобы вернуть строковое представление обратно, используется функция unserialize(). Сериализованную строку удобно хранить в БД или в текстовом файле.

Проблема

Иногда из-за разных кодировок функция unserialize вызывает ошибку типа:

Notice: unserialize(): Error at offset 234 of 5455 bytes in ... at line …

Способ ее устранения:

$text = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $text); 
$array = unserialize($text);
var_dump($array);
PHP

Но данный метод помогает не всегда, поэтому перед сохранением строку следует дополнительно кодировать в base64.

$text = base64_encode(serialize($array));
...
$array = unserialize(base64_decode($text));
PHP

Но более лучший метод хранения массивов в строке это JSON, к томуже он читаемый.

$text = json_encode($array, JSON_UNESCAPED_UNICODE);
...
$array = json_decode($json, true);
PHP
14.12.2016, обновлено 02.11.2021
3789

Комментарии

, чтобы добавить комментарий.

Другие публикации

Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
175149
+25
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
51338
+19
Интеграция с платежной системой PayKeeper в PHP
Платежная платформа PayKeeper позволяет принимать оплату заказов по ссылке, используя данный метод можно с легкостью...
5397
0
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
18355
+7
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
11445
0
Яндекс.Доставка работа с API в PHP
Примеры работы с API Яндекс.Доставки (для заказа перевозки грузов корпоративным клиентам).
2150
+4