Как мне разобрать эту строку: a: 10: {1: 0; s: 7: «по умолчанию»; i: 1; ...? - PullRequest
4 голосов
/ 14 мая 2011

Как я могу читать такие строки?Что они означают?

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 ]

8 голосов
/ 14 мая 2011

Это сериализованная строка. Посмотрите на результаты var_dump(unserialize()). Это НЕ допустимая строка в формате JSON (json_decode() вернет ноль).

Если вы хотите «прочитать» его без десериализации, вы можете увидеть "a:10" означает массив с 10 индексами. "i:0" означает «индекс ноль» и разделяется точкой с запятой с соответствующим значением ("s:7" - строка длиной 7). Значения разделены запятыми. Классы также могут быть сериализованы.

7 голосов
/ 14 мая 2011

Это не JSON, это сериализованный массив.Используйте unserialize(), чтобы превратить его в нечто полезное.

...