php unserialize(): Error at offset 114 of 330 bytes

php 序列化报错

 unserialize(): Error at offset 114 of 330 bytes

报错场景:序列化字段中有中文,反序列化时有可能会出现报错。

错误原因:写入和取出数据库的时候,编码不同,中文符号长度不同,序列化中的长度就无法匹配。

解决办法:适合 php 5.5+

//使用正则将错误的长度修正,@param $str  @return正确的序列化字符串

preg_replace_callback('#s:(\d+):"(.*?)";#s',function($match){return 's:'.strlen($match[2]).':"'.$match[2].'";';},$str);

你可能感兴趣的:(PHP)