码迷,mamicode.com
首页 > Web开发 > 详细

PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

时间:2017-04-25 14:55:51      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:gb2312   ret   表达式   reg   数据   反序   utf-8   php   turn   

使用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 的解决方法

标签:gb2312   ret   表达式   reg   数据   反序   utf-8   php   turn   

原文地址:http://www.cnblogs.com/freespider/p/6761779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!