关于php7反序列化失败
反序列化数据时发现以下数据在php5.3可以得到相同数组,在php7.3下$desc1是false,$desc2是可以执行成功。不知道这个有没有办法处理
$data1 = 'a:2:{s:9:"spec_name";s:6:"口味";s:10:"spec_value";a:2:{i:0;a:3:{s:5:"price";s:2:"10";s:4:"name";s:12:"巧克力味";s:5:"store";s:3:"700";}i:1;a:3:{s:5:"price";s:2:"20";s:4:"name";s:6:"原味";s:5:"store";r:7;}}}';
$data2 = 'a:2:{s:9:"spec_name";s:6:"口味";s:10:"spec_value";a:2:{i:0;a:3:{s:5:"price";s:2:"10";s:4:"name";s:12:"巧克力味";s:5:"store";s:3:"700";}i:1;a:3:{s:5:"price";s:2:"20";s:4:"name";s:6:"原味";s:5:"store";s:3:"700";}}}';
$desc1 = unserialize($data1);
$desc2 = unserialize($data2);
var_dump($desc1);
var_dump($desc2);
关于 LearnKu
这是官方文档里给出的可以设置的回调函数,你可以自己写一个异常检查函数修复不正确的内容
思路是通过
$types = array('s' => 'string', 'a' => 'array', 'b' => 'bool', 'i' => 'int', 'd' => 'float', 'N;' => 'NULL');和 explode 函数再加递归就可以实现,或者用正则替换也可以实现。