[php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
[php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
_多么痛的领悟 发表于6个月前
[php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
  • 发表于 6个月前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

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

php 5.5以前

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

php5.5以后

function mb_unserialize($serial_str) { return preg_replace_callback('!s:(\d+):"(.*?)";!s', function($m) { return 's:'.strlen($m[2]).":"$m[2]";";}, $serial_str ); }

共有 人打赏支持
粉丝 0
博文 51
码字总数 8369
×
_多么痛的领悟
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: