Решение ошибки PHP. Notice: unserialize(): Error at offset 10 of 41 bytes in

Понадобилось хранить массив в базе данных, воспользовался функцией serialize и всё бы ничего, но при unserialize возникла след. ошибка: PHP. Notice: unserialize(): Error at offset 10 of 41 bytes in

Как говорят хелпы, такая ошибка может возникать из-за раной кодировки, не проблема подумал я сменил кодировку, в .htaccess прописал кодировку по умолчанию, всё равно ничего не получилось.

Есть отличная регулярка, которая решает эту проблему, вот она:

$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $data);

Теперь всё стало работать, но если я отправлял ссылки в массив, всё равно появлялась ошибка, в итоге я нашел замечательное решение моей проблемы! Просто кодируем в base64 а потом декодируем и вуаля, всё отлично работает!

$toDatabse = base64_encode(serialize($data));  // Сохраняем в базу данных
$fromDatabase = unserialize(base64_decode($data)); // Забираем из базы данных

Комментариев нет »

Еще нет комментариев.

Оставить комментарий

Войти с помощью: 
Вы должны войти чтобы оставить комментарий.