介绍

在用Python去读PHP语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过PHP的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,Python专门有个库用来模拟PHP语言的serialize和unserialize的功能,它就是phpserialize库。

安装

phpserialize库可以直接通过pip进行安装。

pip3 install phpserialize

使用

序列化

使用phpserialize库序列化一个结构转化为一个字符串用到的是dumps方法,用法和json库类似,区别是编码参数不是encoding是charset。

list= {
    'id': 1,
    'name': "names1",
    'abilities': [
        "PHP",
        "Java",
        "Python",
        "JavaScript",
        "C/C++",
        "Asp.net"
    ]
}

print("原始数据:")
print(list)

print("序列化数据:")
user_text = phpserialize.dumps(list, charset="utf-8")
print(user_text )

可以看到序列化的结果和PHP的serialize基本一致。

反序列化

使用phpserialize库反序列化一个序列化字符串得到原始数据结构用的是loads方法,用法和json库基本一样,同样编码参数也是charset而不是我们想象的encoding。

list= b'a:4:{s:2:"id";i:1;s:4:"name";s:6:"names1";s:3:"sex";i:1;s:7:"address";a:2:{i:0;s:28:"\xe6\xb2\xb3\xe5\x8c\x97\xe7\x9c\x81\xe4\xbf\x9d\xe5\xae\x9a\xe5\xb8\x82XX\xe8\xb7\xafXX\xe5\x8f\xb7";i:1;s:34:"\xe5\x86\x85\xe8\x92\x99\xe5\x8f\xa4\xe5\x91\xbc\xe4\xbc\xa6\xe8\xb4\x9d\xe5\xb0\x94\xe5\xb8\x82XX\xe8\xb7\xafXX\xe5\x8f\xb7";}}' print("序列化数据:") print(list) print("原始数据:") user_text = phpserialize.loads(list, charset="utf-8") print(user_text)

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源