有些时候由于序列化的编码问题,当反序列化时会出现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);
}
本文提供了解决因编码问题导致反序列化失败的方法,通过两种不同的函数实现:mb_unserialize 和 asc_unserialize,分别针对 UTF-8 和 ASCII 编码。
3735

被折叠的 条评论
为什么被折叠?



