PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
Posted FreeSpider
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法相关的知识,希望对你有一定的参考价值。
使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题,所以需要使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍,代码如下:
function mb_unserialize($serial_str) { $out = preg_replace_callback( ‘!s:(\d+):"(.*?)";!s‘, function($r){ return ‘s:‘.strlen($r[2]).‘:"‘.$r[2].‘";‘; }, $serial_str ); return unserialize($out); }
以上是关于PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
php函数serialize()与unserialize()
PHP "Unserialize()"函数释放后重利用远程代码执行漏洞
如何使用 php serialize() 和 unserialize()