我得到的确切错误是:
ErrorException [注意]: unserialize(): 偏移量 5 处的错误,共 59 个字节
MySQL中TEXT字段返回的序列化数据为(编码:utf8,引擎:InnoDB):
a:1:{s:12:"display_name";s:6:"Foo";}
反序列化后的输出是:
array(1) { [0]=> bool(false) }
我期待这样的事情:
array(1) { ["display_name"]=> string(6) "Foo" }
我在 Mac OS 10.8.4 上使用 FuelPHP 1.6.1、PHP 5.4.10、MySQL 5.5.29、InnoDB 1.1.8。一些序列化的条目在反序列化时起作用,而另一些则不起作用,如果我复制一个有效的并粘贴到一个无效的条目中,它会显示相同的错误。我相信这是一个字符问题,我尝试将其编码为 utf8、urlencode 和 stripslashes,但似乎没有任何效果。
任何帮助表示赞赏!
更新
序列化的字符串有一个类型,为了保护实际显示名称的隐私,我在此处粘贴它时这样做了。这是实际的字符串:
a:1:{s:12:"display_name";s:3:"Foo";}
感谢@robw 指出这一点。
更新和回答
我现在正在运行序列化数据html_entity_decode()
:
$unserialized = unserialize(html_entity_decode($serialized, ENT_QUOTES));
感谢您的帮助和建议!