有些时候由于序列化的编码问题,当反序列化时会出现retun false的情况,该情况的解决方案:
//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);
}
//ASC
function asc_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);
}
//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);
}
//ASC
function asc_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);
}