gpt4 book ai didi

PHP unserialize() 偏移量错误

转载 作者:行者123 更新时间:2023-12-04 04:51:38 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to repair a serialized string which has been corrupted by an incorrect byte count length?

(16 个回答)


8年前关闭。




我得到的确切错误是:

ErrorException [注意]:unserialize():在 59 字节的偏移量 5 处出错

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));
感谢您的帮助和建议!

最佳答案

您的问题在这里:s:6:"Foo"Foo不是 6 个字符长......因此永远不会按预期解析。

试试:s:3:"Foo"
PS:这看起来像你在 MySQL 中编辑数据,然后当你的应用程序试图解析它时,它出错了。除非您 100% 确定您已经根据 TYPE 和 VALUE 修改了 LENGTH,否则永远不要编辑数据库中的序列化值。

关于PHP unserialize() 偏移量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348448/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com