想知道是否有人可以指出我正确的方向。
我有一个日志,当值作为备份插入数据库时创建,不幸的是,主机必须回滚,我想恢复一些数据。
脚本写的如下:
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():偏移时出错
我知道这可能是我,我正面临着试图获取这些数据的压力:(
答案 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));
因为您使用的序列化将输入",',:或;在任何数组值中,序列化都会被破坏。