例如,我有字符串
a:1:{i:0;a:3:{s:4:"name";s:56:"Song → Black Meen : “So Clean (feat. Dullaah Jin)”";s:4:"file";s:98:"http://localhost/peace.worldwide/wp-content/uploads/2013/05/03-So-Clean-feat.-Dullaah-Jin.mp3";s:9:"condition";s:3:"all";}}
我想反序列化它。
当我把它传递给unserialize()时,结果什么都没有(所以例如print_r(unserialize(/*I put the string here*/))
绝对没有打印)。
为什么会发生这种情况?
答案 0 :(得分:0)
在error_reporting中打开您的通知:
PHP Notice: unserialize(): Error at offset 204 of 229 bytes in php shell code on line 1
在这些偏移附近你有一个
s:98:"http://localhost/peace.worldwide/wp-content/uploads/2013/05/03-So-Clean-feat.-Dullaah-Jin.mp3"
表示应该有一个长度为98的字符串,但该字符串只有93个字节长。
答案 1 :(得分:0)
我发现问题导致数据库中的序列化字符串搞砸了。我已经搜索/替换了数据,将str8wayent.com替换为localhost,这显然会更改序列化值,但不会更改数据库中的长度字段。
我发现这个很好的脚本来修复sql转储文件中的序列化长度字段: github.com/Blogestudio/Fix-Serialization