Функция 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
14.12.2016, обновлено 30.09.2019 1178

Поделится

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

PHP предлагает гибкие настройки вывода ошибок, среди которых функия error_reporting($level) – задает, какие...
10.10.2019 30
Пример как сформировать товарную накладную в с помощью класса PHPExcel. Скачать класс можно с официального сайта или...
27.01.2017 5855
Сборник jQuery приемов с textarea - получить содержимое, вставить значение, подсчет количества символов и строк и т.д.
04.03.2018 9207
В PHP без проблем можно работать с почтой через IMAP, для этого есть все необходимые функции
30.09.2019 77
Несколько примеров как в PHP получить информацию о домене и IP-адресе.
10.04.2019 658
Функция array_unique возвращает массив без повторяющихся значений, она работает и с многомерными массивами.
28.06.2019 524