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);

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

$text = base64_encode(serialize($array));
...
$array = unserialize(base64_decode($text));
14 декабря 2016
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...