Вот почему у меня возникла эта проблема и как я с ней справился:
Я хранил массив во входных данных, подобный этому:
value="<?php echo htmlspecialchars(serialize(array($a, $b))); ?>"
Здесь мне пришлось использовать htmlspecialchars()
из-за возможных ошибок разбора.
Затем, когда я попытался десериализовать, это дало мне эту ошибку Error at offset X of Y bytes in ...
. Я распечатал несериализованную строку на экране и понял, что HTML-эквиваленты некоторых символов вызывают ошибку.
Для большей ясности, двойные кавычки html-кодов %22
вызывали эту ошибку. Поэтому я заменил их обратно на кавычки, и это сработало.
unserialize(str_replace('%22', '"', $_POST['serialized']));
Так что лучше проверить, есть ли в сериализованной строке html-коды, и заменить их исходными символами.