2016-02-11 3 views
1

задавался вопросом, может ли кто-нибудь указать мне в правильном направлении.Сериализованный файл журнала

У меня есть журнал, который создается, когда значения вставляются в базу данных точно так же, как резервная копия, к сожалению, хосту пришлось отбросить это назад, и я хочу восстановить некоторые данные обратно.

Сценарий пишет так:

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

Попробуйте это:

$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)); 

Поскольку сериализации вы использование будет вводить «,», «:» или «; в любом из значений массива, и сериализация будет повреждена.

+0

Спасибо, за вашу помощь - он дал мне ошибку обратно: «Модификатор/e обесценился, используйте preg_replace_callback вместо» - так что я попытался это сделать, а затем он с ошибками «Требуется аргумент 2»: .strlen ('$ 2'). ': «$ 2»;' ', чтобы быть действительным обратным вызовом' - действительно очень ценю вашу помощь, хотя мне просто нужно будет двигаться дальше и забывать потерянные данные, а затем реализовать свое предложение для сериализовать часть. - Еще раз спасибо – Andy

+0

Один момент. Я вернусь к вам –

+0

кажется, что он потерян :(но с этого момента используйте предложение выше. Надеюсь, он поможет вам в будущем. –

Смежные вопросы