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

/*
 * 解决反序列化时由于字符长度原因导致报错
 * 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);

 

posted @ 2021-08-30 10:59  知冷知热  阅读(199)  评论(0)    收藏  举报