Análise de dados JSON a partir de um servidor remoto
Pergunta
Eu estava me perguntando se havia alguma forma de fazer um Parser em PHP, que obtém os valores deste site https://btc-e.com/api/2/btc_usd/ticker
e define-os como variáveis no código php?
Eu olhei em php analisadores um pouco e a única coisa que eu encontrei foi analisadores que ecoam todas as informações em um site.
Solução
Desde que retorna uma URL JSON
resposta:
<?php
$content=file_get_contents("https://btc-e.com/api/2/btc_usd/ticker");
$data=json_decode($content);
//do whatever with $data now
?>
Outras dicas
Você pode usar file_get_contents
para obter os dados a partir do URL e json_decode
para analisar o resultado, porque o site se você tiver vinculado está retornando um JSON matriz, que pode ser analisado pelo php de forma nativa.
Exemplo:
$bitcoin = json_decode(file_get_contents("https://btc-e.com/api/2/btc_usd/ticker"), true);
No $bitcoin
variável terá um array associativo com os valores de seqüência de caracteres JSON.
Resultado:
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)
}
}
Os dados em que a página é chamada de Json (JavaScript Object Notation) (não a sua saída, como json tipo de mime, mas é formatado como json).
Se você sei que os dados serão json, você pode adquirir-lo como uma cadeia de caracteres a partir da página (usando por exemplo, o file_get_contents
função) e decodificá-lo para um array associativo com o json_decode
função:
<?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'];
<?
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"];
?>