unserialize反序列化错误的解决办法

有些时候由于序列化的编码问题,当反序列化时会出现结果为false的情况,解决办法是将unserialize函数扩展成如下函数:

1. 若要反序列化为UTF-8:

function mb_unserialize($serial_str) {
    $serial_str = str_replace("\r", "", $serial_str);
    $serial_str = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );
    return unserialize($serial_str);
}

2. 若要反序列化为GBK:

function mb_unserialize($serial_str) {
    $serial_str = str_replace("\r", "", $serial_str);
    $serial_str = preg_replace('!s:(\d+):"(.*?)";!se', '"s:".strlen("$2").":\"$2\";"', $serial_str );
    return unserialize($serial_str);
}

转载于:https://www.cnblogs.com/smismile/p/3430532.html

你可能感兴趣的:(数据库)