Yahoo Finance döviz kuru alma için PHP ve curl

3 Cevap php

I wrote the following php snippet to fetch the currency conversion rate from Yahoo Finance.Im using curl to fetch the data. Suppose, i want to convert from US dollars (USD) to Indian National Rupee (INR),then the url is http://in.finance.yahoo.com/currency/convert?amt=1&from=USD&to=INR&submit= and the Indian Rupee value is shown as 45.225. However,if i run my code, the value im getting is 452.25. Why this discrepancy ?

<?php

  $amount = $_GET['amount'];
  $from = $_GET['from'];
  $to = $_GET['to']; 
  $url = "http://in.finance.yahoo.com/currency/convert?amt=".$amount."&from=".$from."&to=".$to;
  $handle = curl_init($url);
  curl_setopt ($handle, CURLOPT_RETURNTRANSFER, true);
  $data = curl_exec($handle);
  if(preg_match_all('/<td class="yfnc_tabledata1"><b>(?:[1-9]\d+|\d)(?:\.\d\d)?/',$data,$matches))
  {
    print_r($matches[0][1]);
  }
  else
  {
    echo "Not found !";
  }
  curl_close($handle);

?>

Benim regex ile yanlış bir şey var mı?

Please help. Thank You.

3 Cevap

Yahoo Finance (neredeyse) kesinlikle karşılık gelen bir API vardır, böylece para birimi dönüştürme için bazı rasgele HTML ayrıştırmak zorunda değilsiniz.

Ayrıca, Google en http://www.google.com/ig/calculator?q=1 EUR IN USD gibi bir şey kullanarak ve bu yanıt ayrıştırma tahmin ediyorum çok daha kararlı Yahoo'nun HTML sayfası ayrıştırma daha.

Sen yahoo.finance.xchange açık tablosunu kullanarak XML veya JSON formatında fiyatla alabilirsiniz:

Try it in YQL console

O bu ayrıştırmak çok daha kolay böylece yoluyla. Csv dosyaları Yahoo Para erişebilirsiniz. Örnek: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s= 'EURUSD' = x

Ve basit kod:

function currencyImport($from,$to)
{
$url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $from . $to .'=X';
$handle = @fopen($url, 'r');

if($handle)
{
    $result = fgets($handle, 4096);
    fclose($handle);
}

$currencyData = explode(',',$result);
return $currencyData[1];
}