【问题标题】:PHP - unserialize returns false on string from serialize.jsPHP - 反序列化从 serialize.js 的字符串返回 false
【发布时间】:2015-05-01 17:40:04
【问题描述】:

我正在使用serialize.js 序列化一个对象,我得到了这个字符串:

a:4:{s:8:"option-1";i:0;s:8:"option-2";i:1;s:8:"option-3";i:0;s:8:"option-4";i:0;};

当我在 PHP 中运行反序列化时,我得到了

unserialize() [function.unserialize]:在 123 个字节的偏移量 5 处出错

我该如何解决这个问题?

【问题讨论】:

  • 对我来说很好用!请显示您如何反序列化字符串的代码
  • 似乎有几个库提供了 Javascript serialize 函数。你用的是哪一个?
  • 嗯,我刚试过,如果我这样做unserialize('a:4:{s:8:"option-1";i:0;s:8:"option-2";i:1;s:8:"option-3";i:0;s:8:"option-4";i:0;};');,它就可以工作,但是它不适用于unserialize(trim($this->value())); 当我var_dump $this->value()时,我得到了字符串......迷失在这里
  • 您粘贴的错误是Error at offset 5 of 123 bytes,但字符串长度为84字节。您确定这是您遇到问题的字符串吗?
  • 这确实很奇怪 - 当我做die(var_dump($this->value())) 时,我得到string(123) "a:4:{s:8:"option-1";i:0;s:8:"option-2";i:1;s:8:"option-3";i:0;s:8:"option-4";i:0;};"

标签: php serialization


【解决方案1】:

您很可能需要在输出之前通过 urlencode() 传递序列化的字符串。

要处理它,请在 unserialize() 之前使用 urldecode()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多