Строковый объект в массив с PHP - PullRequest
0 голосов
/ 05 февраля 2012

Чудо, я получаю из какого-то API следующую строку:

parseresponse({"eurusd":{ "id": "eurusd", "category": "Forex", "price": 1.3161, "name": "EUR/USD", "buy": 1.3162, "sell": 1.3159, "change": 0.00, "date":1328288216000}});

по какой-то причине я не могу заменить его на массив при использовании:

var_dump(json_decode($content));

и я пытаюсьтакже с функцией php:

function object2array($object) {
if (is_object($object)) foreach ($object as $key => $value) $array[$key] = $value;
    else $array = $object;
return $array;
}

есть идеи? ..

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

Вы пытаетесь проанализировать JSONP ответ как JSON, сначала вы должны удалить функцию переноса.

$response = 'parseresponse({"eurusd":{ "id": "eurusd", "category": "Forex", "price": 1.3161, "name": "EUR/USD", "buy": 1.3162, "sell": 1.3159, "change": 0.00, "date":1328288216000}});';
$json = preg_replace('/^parseresponse\((.*)\);/', '$1', $response);
$data = json_decode($json, true);
print_r($data);
0 голосов
/ 05 февраля 2012

Вы можете попробовать что-то вроде этого:

$content = '{"eurusd":{ "id": "eurusd", "category": "Forex", "price": 1.3161, "name": "EUR/USD", "buy": 1.3162, "sell": 1.3159, "change": 0.00, "date":1328288216000}}';

function toArray($data) {
    if (is_object($data)) $data = get_object_vars($data);
    return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
    }

$newData = toArray (json_decode($content));

print_r($newData);

вывод будет:

Массив ( [eurusd] => Массив ( [id] => eurusd [категория] => Форекс [цена] => 1,3161 [имя] => EUR / USD [купить] => 1,3162 [продать] => 1,3159 [изменить] => 0 [дата] => 1328288216000 )

)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...