2014-01-09 2 views
3

Мне было интересно, есть ли способ сделать Parser на PHP, в котором получают значения с этого сайта https://btc-e.com/api/2/btc_usd/ticker и задает их как переменные в php-коде?Анализ данных JSON с удаленного сервера

Я немного разглядел парсер php, и единственное, что я нашел, это синтаксические анализаторы, которые отражают всю информацию на веб-сайте.

+0

Если вам интересно - если есть способ разобрать, то - да, это так. Так в чем ваш вопрос? Выполняете всю работу? Добавить описание конкретной проблемы –

+3

Это похоже на ответ json на меня – Hackerman

ответ

9

Так что URL возвращает JSON ответ:

<?php 

$content=file_get_contents("https://btc-e.com/api/2/btc_usd/ticker"); 
$data=json_decode($content); 
//do whatever with $data now 
?> 
+0

Я пробовал, но почему-то получаю ошибку ?> И я получаю эту ошибку Неустранимая ошибка: нельзя использовать объект типа stdClass как массив в C: \ wamp3 \ www \ DROPBOX \ Dropbox \ FTP \ Test2.php в строке 5 – JVarhol

+1

по умолчанию 'json_decode' даст вам объект назад, если вам нужно использовать его как массив, тогда вы можете использовать '$ data = json_decode ($ content, true);' –

1

Вы можете использовать file_get_contents, чтобы получить данные из URL и json_decode разобрать результат, потому что сайт вы связали это возвращает JSON массив, который может обрабатываться php изначально.

Пример:

$bitcoin = json_decode(file_get_contents("https://btc-e.com/api/2/btc_usd/ticker"), true); 

В переменной $bitcoin вы будете иметь ассоциативный массив со значениями строк JSON.

Результат:

array(1) { 
    ["ticker"]=> 
    array(10) { 
    ["high"]=> 
    float(844.90002) 
    ["low"]=> 
    int(780) 
    ["avg"]=> 
    float(812.45001) 
    ["vol"]=> 
    float(13197445.40653) 
    ["vol_cur"]=> 
    float(16187.2271) 
    ["last"]=> 
    float(817.601) 
    ["buy"]=> 
    float(817.951) 
    ["sell"]=> 
    float(817.94) 
    ["updated"]=> 
    int(1389273192) 
    ["server_time"]=> 
    int(1389273194) 
    } 
} 
1

Данные на этой странице, называется JSon (JavaScript Object Notation) (его не выводится как тип JSON мим, но отформатированный как JSON).
Если вы знаете, что данные будут JSON, вы можете aquire его как строку со страницы (с использованием, например, функции file_get_contents) и декодировать его в ассоциативный массив с json_decode функции:

<?php 
$dataFromPage = file_get_contents($url); 
$data = json_decode($dataFromPage, true); 
// Then just access the data from the assoc array like: 
echo $data['ticker']['high']; 
// or store it as you wish: 
$tickerHigh = $data['ticker']['high']; 
+0

Я бы поставил это между правильно? – JVarhol

+0

Да, это пример кода php. :) – Jite

+0

Когда я использую этот код, я получаю эту ошибку Неустранимая ошибка: нельзя использовать объект типа stdClass as array в C: \ wamp3 \ www \ DROPBOX \ Dropbox \ FTP \ Test2.php в строке 5 – JVarhol

2
<? 
function GetJsonFeed($json_url) 
{ 
$feed = file_get_contents($json_url); 
return json_decode($feed, true); 
} 
$LTC_USD = GetJsonFeed("https://btc-e.com/api/2/ltc_usd/ticker"); 
$LTC_USD_HIGH = $LTC_USD["ticker"]["last"]; 

$BTC_USD = GetJsonFeed("https://btc-e.com/api/2/btc_usd/ticker"); 
$BTC_USD_HIGH = $BTC_USD["ticker"]["last"]; 
?> 
Смежные вопросы