序列化日志文件

时间:2016-02-11 13:56:10

标签: php serialization

想知道是否有人可以指出我正确的方向。

我有一个日志,当值作为备份插入数据库时​​创建,不幸的是,主机必须回滚,我想恢复一些数据。

脚本写的如下:

fwrite($handle, file_put_contents($target_path, serialize($array) . PHP_EOL, FILE_APPEND));

日志文件存储如下数据:

514a:4:{s:10:"job_number";s:5:"00001";s:5:"title";s:10:"Job Spec 1";s:8:"Location";s:6:"City 1";}
502a:4:{s:10:"job_number";s:5:"00002";s:5:"title";s:10:"Job Spec 2";s:8:"Location";s:6:"City 2";}

我尝试过使用

$recoveredData = file_get_contents('43532-12.txt');
$recoveredArray = unserialize($recoveredData);

print_r($recoveredArray);

但那会返回 - 注意:unserialize():偏移时出错

我知道这可能是我,我正面临着试图获取这些数据的压力:(

1 个答案:

答案 0 :(得分:1)

试试这个:

$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $recoveredData);
var_dump(unserialize($data));

我建议使用

//to safely serialize
$safe_string_to_store = base64_encode(serialize($multidimensional_array));

//to unserialize...
$array_restored_from_db = unserialize(base64_decode($encoded_serialized_string));

因为您使用的序列化将输入",',:或;在任何数组值中,序列化都会被破坏。

相关问题