解决反序列化时由于字符长度原因导致报错

发布时间 2023-05-08 16:27:19作者: 知冷知热

/*
* 解决反序列化时由于字符长度原因导致报错
* unserialize(): Error at offset 126 of 691 bytes
*/
function common_unserialize($str) {
if(empty($str)){
return '';
}
$str= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $str );
$str= str_replace("\r", "", $str);
return unserialize($str);
}


示例:
$a = 's:36:"国税局家属楼*号楼*单元***";';
var_dump(unserialize($a));
$a= common_unserialize($a);
var_dump($a);