用法>>> from phpserialize import *
>>> obj = dumps("Hello World")
>>> loads(obj)
'Hello World'
因为php不知道列表的概念
像php中的散列映射一样序列化。事实上
序列化列表的反向值是dict:>>> loads(dumps(range(2)))
{0: 0, 1: 1}
如果您想再次拥有一个列表,您可以使用
dict\u to\u列表
帮助函数:>>> dict_to_list(loads(dumps(range(2))))
[0, 1]
也可以通过使用dict to tuple将其转换为元组。
功能:>>> dict_to_tuple(loads(dumps((1, 2, 3))))
(1, 2, 3)
另一个问题是unicode字符串。默认情况下,Unicode字符串是
编码为"utf-8",但未在非序列化时解码。原因
这是phpSerialize无法猜测您是否有二进制或文本数据
在字符串中:>>> loads(dumps(u'Hello W\xf6rld'))
'Hello W\xc3\xb6rld'
如果知道结果中只有已知字符集的文本数据
您可以通过在调用时将
decode_strings
设置为true来解码字符串
负载:>>> loads(dumps(u'Hello W\xf6rld'), decode_strings=True)
u'Hello W\xf6rld'
字典键仅限于字符串和整数。
无
被转换
变成一个空字符串,并将浮点和布尔值变成php的整数。
兼容性:>>> loads(dumps({None: 14, 42.23: 'foo', True: [1, 2, 3]}))
{'': 14, 1: {0: 1, 1: 2, 2: 3}, 42: 'foo'}
它还提供从类似文件的对象中读取的功能:>>> from StringIO import StringIO
>>> stream = StringIO('a:2:{i:0;i:1;i:1;i:2;}')
>>> dict_to_list(load(stream))
[1, 2]
写信给那些人:>>> stream = StringIO()
>>> dump([1, 2], stream)
>>> stream.getvalue()
'a:2:{i:0;i:1;i:1;i:2;}'
支持对象的链接:>>> from phpserialize import *
>>> obj = dumps("Hello World")
>>> loads(obj)
'Hello World'
0
但是,php不支持此功能。php只会取消序列化
第一个对象。