Получите цену Bid/Ask для валют в PHP с помощью Yahoo Finance

Я нашел/взломал (и я имею в виду взломал, я знаю, что это некрасиво) приведенный ниже код.

Что мне предстоит выполнить:

  • Получите оба значения аск/бид для 3 валют
  • Валюта: доллары США, BRL,
  • EUR Базовая валюта — ARS.
  • Не слишком увлекайтесь, мне просто нужно отобразить 6 значений (предложение/спрос для каждой валюты из базовой валюты).

Я могу получить то, что я считаю средней ставкой, но я не знаю, как получить значения бид/аск.

Я заметил, что: - если вы измените $usd_allData[1] на $usd_allData[2], вы получите дату - если вы измените $usd_allData[1] на $usd_allData[3], вы получите время

Если у вас есть идеи или вспышки гениальности, пожалуйста, пришлите их мне.

Заранее спасибо!


<?php

/* USD
------------------------- */
$usd_from   = 'USD'; /*change it to your required currencies */
$usd_to     = 'ARS';
$usd_url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $usd_from . $usd_to .'=X';
$usd_handle = @fopen($usd_url, 'r');

if ($usd_handle) {
    $usd_result = fgets($usd_handle, 4096);
    fclose($usd_handle);
}
$usd_allData = explode(',',$usd_result); /* Get all the contents to an array */
$usd_Value = $usd_allData[1];

/* EUR
------------------------- */
$eur_from   = 'EUR'; /*change it to your required currencies */
$eur_to     = 'ARS';
$eur_url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $eur_from . $eur_to .'=X';
$eur_handle = @fopen($eur_url, 'r');

if ($eur_handle) {
    $eur_result = fgets($eur_handle, 4096);
    fclose($eur_handle);
}
$eur_allData = explode(',',$eur_result); /* Get all the contents to an array */
$eur_Value = $eur_allData[1];

/* BRL
------------------------- */
$brl_from   = 'BRL'; /*change it to your required currencies */
$brl_to     = 'ARS';
$brl_url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $brl_from .     $brl_to .'=X';
$brl_handle = @fopen($brl_url, 'r');

if ($brl_handle) {
    $brl_result = fgets($brl_handle, 4096);
    fclose($brl_handle);
}
$brl_allData = explode(',',$brl_result); /* Get all the contents to an array */
$brl_Value = $brl_allData[1];

echo (
    $usd_Value . '<br><hr>' .
    $eur_Value . '<br><hr>' .
    $brl_Value 
)

?>

person Ryan Dorn    schedule 20.02.2014    source источник


Ответы (2)


Вы думали о Google вместо Yahoo? Нужен API для конвертации валют

Я бы также просто распечатал ваши массивы, чтобы увидеть, что получается, вместо того, чтобы выбирать их по пунктам.

person lxndr    schedule 20.02.2014

Вы просто сделали мой день. Выполнение 'print_'r массива, а затем быстрый поиск в Google привели меня к этой статье под названием 'API Yahoo Finance (скрытый)'

Оказывается, этот бит является ключом:

http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=

В частности, что следует за этим:

&f=

Буквы, следующие за этим, получают соответствующую переменную. Таким образом, получается sl1, d1, t1.

sl1d1t1

Изменив это на бит ниже (b2, b3), вы получите бид и аск в реальном времени (насколько это точно, я понятия не имею).

sl1d1t1b2b3

Огромное, огромное, огромное спасибо!

person Ryan Dorn    schedule 21.02.2014