由于某些时候会有错误出现,可以使用这个进行剔除错误的代码。然后再继续解码。
sunserialize.php:
<?
//自动去除 serialize里面的错误内容。
function sunserialize($string){
$regx1 = '/^([a-z]+:[0-9]+:){(.*)}$/';
preg_match_all($regx1,$string,$list);
$string = $list[1][0];
$array = explode(';',$list[2][0]);
$regx2 = '/^([a-z]+):([0-9]+):(.*)/';
foreach ($array as $key => $val){
if(!$val) continue;
preg_match($regx2,$val,$s);
if(strlen($s[3]) != ($s[2]+strlen('"')*2)){
$val = 's:5:"error"';
}
$array[$key] = $val;
}
$string .= '{'.implode(';',$array).'}';
return unserialize($string);
}
?> 