Warning: Error while sending QUERY packet. PID=4753 in /home/wwwroot/coco/domain/cnlamp/web/wp-includes/wp-db.php on line 1877 PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法 | LAMP新闻|技巧|经验|资讯站
现在的位置: 首页PHP>正文
PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
发表于3年前 PHP 暂无评论

使用unserialize函数将数据还原回数组的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题,所以需要使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍,代码如下:

function mb_unserialize($serial_str) {
    $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );
    return unserialize($out);
}

给我留言

留言无头像?


×
腾讯微博