gpt4 book ai didi

PHP 使用错误的字符数序列化 protected 类变量?

转载 作者:搜寻专家 更新时间:2023-10-31 20:35:11 24 4
gpt4 key购买 nike

我正在处理 PHP 5.2.6 中的一个奇怪问题,序列化对象。

显然,PHP 存储 protected 变量成员时其名称前面带有星号。这是正常且正确的,但是,请看以下示例:

O:18:"object__songChords":1:{s:9:"*chords"}

*chords 不包含 9 个字符,而是 7 个字符(带有星号)。

自然地,我假设我这边有一些误解,PHP 只计算引号,但是当我将它与存储的其他字符串进行比较时,我发现情况并非如此。

底线是 PHP 无法反序列化这些对象,尽管类没有改变。

Notice: unserialize(): Error at offset 43 of 867 bytes in ...

谁能对此提供一些见解?

编辑(提供类(class))

class object__songChords {
protected $chords;
protected $lyrics;
}

请注意,为了简单起见,我删除了上面的序列化示例——实际的序列化字符串当然包含这两个属性。

最佳答案

计数没有关闭,有两个 \0 空字符分隔 *,每边一个:

$o = new object__songChords;
echo addslashes(serialize($o));

产量:

O:18:\"object__songChords\":2:{s:9:\"\0*\0chords\";N;s:9:\"\0*\0lyrics\";N;}

关于PHP 使用错误的字符数序列化 protected 类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37468262/

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