java 反序列化PHP

由于本人所在开发的项目,前期是由php完成的,这里需要对数据库中php序列化的字符串进行反序列化。

1、引入maven依赖

<!--反序列化 php-->
<dependency>
<groupId>org.sction</groupId>
<artifactId>phprpc</artifactId>
<version>3.0.2</version>
</dependency>

2、反序列化对象方法

public static Test getUnserialize(String content) throws Exception {
    PHPSerializer p = new PHPSerializer();
    if (StringUtils.isEmpty(content))
        return null;
    Test t =  (Test) p.unserialize(content.getBytes(),Test.class);
    return t;
}

3、测试结果

4、反序列化对象数组 这里的对象是字符串对象

/**
* 对php序列化的字符串,进行反序列化
*/
public List<String> unserializePHParray(String content){
List<String> list = new ArrayList<String>();
PHPSerializer p = new PHPSerializer();
if (StringUtils.isEmpty(content))
return list;
try {
AssocArray array = (AssocArray) p.unserialize(content.getBytes());
for (int i = 0; i < array.size(); i++) {
String t = (String) Cast.cast(array.get(i), String.class);
list.add(t);
}
}catch (Exception e){
System.out.println("反序列化PHParray: " + content + " 失败!!!" );
}
return list;
}

5、测试结果

public static void main(String args[]) {
String content ="a:10:{i:0;s:18:"舞蹈(私教)";i:1;s:5:"Zumba";i:2;s:12:"完美塑造";i:3;s:12:"战斗有氧";i:4;s:12:"杠铃雕塑";i:5;s:12:"核心特训";i:6;s:12:"漫步舞林";i:7;s:12:"身体平衡";i:8;s:12:"高效冲击";i:9;s:12:"魅力热舞";}";
CoachTool tool = new CoachTool();
List<String> reusltList = tool.unserializePHParray(content);
System.out.println(reusltList);

}

输出:[舞蹈(私教), Zumba, 完美塑造, 战斗有氧, 杠铃雕塑, 核心特训, 漫步舞林, 身体平衡, 高效冲击, 魅力热舞]
原文地址:https://www.cnblogs.com/ctaixw/p/6213910.html