php unserialize不工作

时间:2018-06-07 16:45:08

标签: php serialization

我有非常奇怪的情况。 我正在解析隐藏的输入并得到这个字符串:

a:2:{s:12:"subscription";a:5:{s:6:"gender";i:1;s:4:"name";i:1;s:7:"company";i:1;s:5:"email";i:1;s:11:"receiveHtml";i:1;}s:6:"submit";i:1;}d35ea44253419bbb6a8be13422eb606ad54121f4

它来自这个

preg_match_all('/hidden" name="(.*?)" value="(.*?)"/', $html, $hiddenResults);

当我尝试反序列化时,它返回false,但是如果我只是将它设置为变量manualy并且反序列化 - 它可以工作!!什么问题?

我注意到了这一点:

string(248) "a:2:{s:12:"subscription";a:5:{s:6:"gender";i:1;s:4:"name";i:1;s:7:"company";i:1;s:5:"email";i:1;s:11:"receiveHtml";i:1;}s:6:"submit";i:1;}d35ea44253419bbb6a8be13422eb606ad54121f4" 
string(178) "a:2:{s:12:"subscription";a:5:{s:6:"gender";i:1;s:4:"name";i:1;s:7:"company";i:1;s:5:"email";i:1;s:11:"receiveHtml";i:1;}s:6:"submit";i:1;}d35ea44253419bbb6a8be13422eb606ad54121f4"

相同的字符串有不同的长度!这怎么可能 ?

1 个答案:

答案 0 :(得分:0)

str_replace(""", '"', $hiddenValues[$i]);

它解决了问题