#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 изменил строку, чтобы удалить конфиденциальные данные.