php//我的页面是utf-8编码的结果为:a:2:{s:2:en;s:21:http://www.phpddt.com;s:2:cn;s:6:教程;}//我的页面是ansi编码的结果为:a:2:{s:2:en;s:21:http://www.phpddt.com;s:2:cn;s:4:教程;}echo serialize(array('en'=>'http://www.phpddt.com','cn'=>'教程'));从上很容易看出页面的编码不同,serialize的中文字符串的长度就不同,问题就出来了,如果你unserialize的时候字符串的长度大于实际字符串的长度,会报如下错误:
notice: unserialize() [function.unserialize]: error at offset
解决办法是你要对反序列的字符串进行一次转换:
function _unserialize($string){return unserialize(preg_replace('!s:(\d+):(.*?);!se','s:.strlen($2).:\$2\;', $string));}
转载自: http://www.phpddt.com/php/unserialize-error-at-offset.html
以上就介绍了php unserialize出现error at offset错误,包括了serialize方面的内容,希望对php教程有兴趣的朋友有所帮助。