序列化 PHP 字符串的结构
我想知道是否有人可以向我指出一个资源,其中记录了序列化的php字符串的详细信息。我基本上想知道格式/结构,这样我就可以在 VB.NET 中编写一个函数来序列化/反序列化它。
谢谢!
我想知道是否有人可以向我指出一个资源,其中记录了序列化的php字符串的详细信息。我基本上想知道格式/结构,这样我就可以在 VB.NET 中编写一个函数来序列化/反序列化它。
谢谢!
基本结构如下:
标量类型:
布尔值序列化为:
b:<i>;
其中 是值为 (假) 或 (真) 的整数。<i>
0
1
整数序列化为:
i:<i>;
其中 是整数值。<i>
浮点数序列化为(含义为双精度):d
d:<f>;
其中 是浮点值。<f>
字符串序列化为:
s:<i>:"<s>";
其中 是一个整数,表示 的字符串长度,并且是字符串值。<i>
<s>
<s>
特殊类型:
null
简单地序列化为:
N;
化合物类型:
数组序列化为:
a:<i>:{<elements>}
其中 是一个整数,表示数组中元素的数量,以及零个或多个序列化的键值对:<i>
<elements>
<key><value>
其中,表示序列化的标量类型以及任何可序列化的值。<key>
<value>
对象序列化为:
O:<i>:"<s>":<i>:{<properties>}
其中,第一个是表示 字符串长度的整数,并且是完全限定的类名(类名前面附加了完整的命名空间)。第二个是表示对象属性数的整数。 是零个或多个序列化名称值对:<i>
<s>
<s>
<i>
<properties>
<name><value>
其中 是一个序列化字符串,表示属性名称以及任何可序列化的值。<name>
<value>
不过,<name>
但有一个问题:
<name>
表示为
s:<i>:"<s>";
其中 是一个整数,表示 的字符串长度。但是,根据属性的可见性,的值会有所不同:<i>
<s>
<s>
一个。公共属性是属性的简单名称。<s>
b.但是,使用受保护的属性的是属性的简单名称,前面附加了 - 一个星号,用两个字符括起来(即 )。<s>
\0*\0
NUL
chr(0)
c. 对于私有属性,是属性的简单名称,前面附加 — ,括在两个字符中,其中是完全限定的类名。<s>
\0<s>\0
<s>
NUL
<s>
还有其他一些情况,例如,代表引用,我在这里没有提到(因为老实说我还没有弄清楚它的确切工作原理),但这应该让你对PHP的序列化机制有一个不错的了解。R:<i>;