Это строка JSON? Получить массив в PHP

#php #json

#php #json

Вопрос:

Я импортирую данные из WordPress. Это WebDirectory 2.0, который сохраняет данные в виде «странной» строки в базе данных.

Пример:

 s:95:"a:2:{s:3:"url";s:39:"http://www.google.com/";s:4:"text";s:13:"Website";}";
 

Я пробовал json_decode() и unserialize() . Оба не работают. Они возвращают строку такой, какая она есть. Я вижу, что это массив с двумя значениями, но как это можно проанализировать в PHP? В каком формате может быть эта строка?

Комментарии:

1. Это выглядит как строка, которая была сериализована дважды, поэтому она должна быть дважды не сериализована.

2. Нет, это не JSON

Ответ №1:

Если у вас есть это:

 echo serialize(serialize(['url'=>'http://www.google.com/','text'=>'Website']));
 

На выходе будет

 s:71:"a:2:{s:3:"url";s:22:"http://www.google.com/";s:4:"text";s:7:"Website";}";
 

Но то, что у вас есть, это

 s:95:"a:2:{s:3:"url";s:39:"http://www.google.com/";s:4:"text";s:13:"Website";}";
 

А это совсем другое дело. Смотрите, s:95 != s:71, среди других элементов.

Или это не реальные данные, или по какой-то причине они генерируют дополнительные символы и вызывают проблему. Я бы проверил, как работает кодировка как из PHP, так и из базы данных, чтобы увидеть, все ли совпадает.

Комментарии:

1. Я думаю, что OP изменил строку, чтобы удалить конфиденциальные данные.