我如何解析这个字符串:a:10:{1:0; s:7:“default”; i:1; ...?

时间:2011-05-13 20:53:28

标签: php database deserialization

我怎样才能阅读这样的字符串?他们是什么意思?

  

a:10:{i:0;s:7:"default";i:1;s:8:"failsafe";i:2;s:4:"foaf";i:3;s:4:"ical";i:4;s:2:"js";i:5;s:4:"json";i:6;s:6:"opendd";i:7;s:3:"php";i:8;s:3:"rss";i:9;s:3:"xml";}

我见过很多使用这种字符串的系统,将它存储在数据库中并解析以获取值。我该如何解析它们?

感谢。

2 个答案:

答案 0 :(得分:8)

这是一个序列化的字符串。查看var_dump(unserialize())的结果。它不是有效的JSON格式的字符串(json_decode()将返回null)。

如果你想在没有反序列化的情况下实际“读取”它,你可以看到"a:10"表示包含10个索引的数组。 "i:0"表示“索引零”,并以相应的值分隔分号("s:7"是一个长度为7的字符串)。值以逗号分隔。类也可以序列化。

答案 1 :(得分:7)

它不是JSON,它是一个序列化数组。使用unserialize()将其变为可用的内容。