欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python与php哪个好(python项目管理方法)

程序员文章站 2023-11-13 17:29:46
1. 介绍1.1 介绍福哥在用python去读php语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过php的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,怎么...

1. 介绍

1.1 介绍

福哥在用python去读php语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过php的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,怎么办呢?

原来python专门有个库用来模拟php语言的serialize和unserialize的功能,它就是phpserialize库。

2. 安装

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

pip3 install phpserialize

3. 使用

3.1 序列化

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

user = {
    'id': 35,
    'name': "福哥",
    'abilities': [
        "php",
        "java",
        "python",
        "javascript",
        "c/c++",
        "asp.net"
    ]
}

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

print("序列化数据:")
usersn = phpserialize.dumps(user, charset="utf-8")
print(usersn)
python与php哪个好(python项目管理方法)

可以看到序列化的结果和php的serialize基本一致。因为福哥设置的编码的utf-8的,所以“福哥”占用了6个字符。

4. 反序列化

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

usersn = b"a:3:{s:2:"id";i:35;s:4:"name";s:6:"xe7xa6x8fxe5x93xa5";s:9:"abilities";a:6:{i:0;s:3:"php";i:1;s:4:"java";i:2;s:6:"python";i:3;s:10:"javascript";i:4;s:5:"c/c++";i:5;s:7:"asp.net";}}"

print("序列化数据:")
print(usersn)

print("原始数据:")
user = phpserialize.loads(usersn, charset="utf-8")
print(user)
python与php哪个好(python项目管理方法)

反序列化的时候最好也加上编码参数,避免以默认编码反序列化出现错误的情况。

5. 总结

福哥今天带着童鞋们学习了python的phpserialize库的使用方法,通过phpserialize库可以让python语言拥有解析php的序列化数据的能力。