首页 > 解决方案 > php反序列化不起作用

问题描述

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

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,但如果我只是将它设置为手动变量并反序列化 - 它可以工作!什么问题?

我注意到了这一点:

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"

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

标签: phpserialization

解决方案


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

它解决了问题


推荐阅读