【问题标题】:How do I parse this string: a:10:{1:0;s:7:"default";i:1; ...?如何解析这个字符串:a:10:{1:0;s:7:"default";i:1; ...?
【发布时间】:2011-05-13 20:53:27
【问题描述】:

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

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";}

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

谢谢。

【问题讨论】:

  • 它的 JSON。基本上是名称-值对
  • 它是不是 JSON。不是不是不是不是不是不是不是不是。

标签: php database deserialization


【解决方案1】:

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

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

【讨论】:

  • 很好的答案,很好的解释!
  • 谢谢。 unserialize() 函数一次只能反序列化一个变量?
  • 是的,我看到了。我只是在检查。稍后我将阅读更多关于它和有用的工作方式的信息。再次感谢!
【解决方案2】:

它不是 JSON,它是一个序列化数组。使用unserialize() 将其变成可用的东西。

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2021-09-23
    • 2022-01-13
    • 2021-06-06
    相关资源
    最近更新 更多