Как уже сказал danp, возвращаемый JSON заключен в вызов функции (определяется jsoncallback=json
).Вы не можете полностью избавиться от этого, но, просто используя AreaSearch?jsoncallback=&lat=41.1131514&lng=-74.0437521
, вы удаляете хотя бы json
в начале строки, и вы можете избавиться от скобок:
$json = trim(trim($json), "();");
, используя:
{items:[{url:"http://fairfield.ebayclassifieds.com/",name:"Fairfield"},{url:"http://newyork.ebayclassifieds.com/",name:"New York City"}],error:null}
К сожалению, строка JSON недопустима.Ключи (items
, url
, ...) должны быть заключены в кавычки "
.Вы можете легко проверить, что вы получаете синтаксическую ошибку с помощью json_last_error()
(код ошибки 4
, JSON_ERROR_SYNTAX
).
Обновление:
В соответствии с этим вопросом: Неправильный синтаксический анализ JSON с использованием PHP , вы можете сделать строку JSON допустимой с помощью:
$json = preg_replace('/(\w+):/i', '"\1":', $json);
Это заключает ключи в кавычки.
Если строка будет действительной, вы можете сгенерировать массив с помощью:
$a = json_decode($json, true);
, который даст вам:
Array
(
[items] => Array
(
[0] => Array
(
[url] => http://fairfield.ebayclassifieds.com/
[name] => Fairfield
)
[1] => Array
(
[url] => http://newyork.ebayclassifieds.com/
[name] => New York City
)
)
[error] =>
)
Таким образом, вы можете получить первый URL и имя через $a['items'][0]['url']
и $a['items'][0]['name']
или
Но я повторяю, JSON, который вы получите в ответ, недействителен и вы не можете разобрать его с json_decode()
в исходном виде.