我有一個文件「serialized.txt」,它包含一個序列化數組(通過執行序列化($ array)創建)。不能從序列化的getimagesize數組文件中排序
s:133:"a:7:{i:0;i:640;i:1;i:480;i:2;i:2;i:3;s:24:"width="640" height="480"";s:4:"bits";i:8;s:8:"channels";i:3;s:4:"mime";s:10:"image/jpeg";}";
來獲取內容我做的:
$string = file_get_contents("serialized.txt");
然後我做的:
print_r(unserialize($string));
,我得到的輸出:
a:7:{i:0;i:640;i:1;i:480;i:2;i:2;i:3;s:24:"width="640" height="480"";s:4:"bits";i:8;s:8:"channels";i:3;s:4:"mime";s:10:"image/jpeg";}
這是序列化版本當它應該是字符串(文件的內容)的時候打印未序列化的數組。如果我複製字符串並執行以下操作:
print_r(unserialize('a:7:{i:0;i:640;i:1;i:480;i:2;i:2;i:3;s:24:"width="640" height="480"";s:4:"bits";i:8;s:8:"channels";i:3;s:4:"mime";s:10:"image/jpeg";}'));
我得到正確的輸出:
Array
(
[0] => 640
[1] => 480
[2] => 2
[3] => width="640" height="480"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
所以,問題似乎從文件中提取時必須隔離,以序列化陣列。
根據unserialize文檔,函數應返回假如果有問題;不是字符串的內容。
序列化的數據從getimagesize採取和我覈實,如果我序列另一個陣列,並將其放置到文件:
serialize(array("hi"));
我可以成功地生成輸出:
Array
(
[0] => hi
)
是有什麼想法可能會發生這種情況?序列化過程與getimagesize數組相關的錯誤,或者是我的副本和粘貼刪除的文件中可能存在的「隱藏」字符?我已經生成了數百萬個這樣的文件,因此我無法更改存儲方法。我想解決方案可能只是編寫我自己的解析器來序列化數組?輸入總是相同的格式,所以這是合理的,但我想知道這是一個錯誤還是我在某處某處發生的錯誤。
很明顯,當您最初保存到文件時,您將其序列化了兩次。 – mario
你已經連載了兩次字符串.... – Baba