簡體   English   中英

解析Yahoo貨幣http://finance.yahoo.com/connection/currency-converter-cache-date的正確方法是什么?

[英]What is the proper way to parse yahoo currency http://finance.yahoo.com/connection/currency-converter-cache?date?

正如我嘗試的代碼並通過嘗試刪除以將JSON內容從返回中移除的方法,下面是我使用的方法。

$date= YYYYMMDD; 

//example '20140113'

$handle = fopen('http://finance.yahoo.com/connection/currency-converter-cache?date='.$date.'', 'r');

//sample code is http://finance.yahoo.com/connection/currency-converter-cache?date=20140208 paste the url in browser;

// use loop to get all until end of content 

   while (!feof($handle)) {
            $contents .= fread($handle, 8192);
        }
        fclose($handle);

代碼以yahoo和json格式返回給定的批量

所以刪除未知格式

   "/**/YAHOO.Finance.CurrencyConverter.addConversionRates (" and ends with ");"

通過

  $contents = str_replace('/**/YAHOO.Finance.CurrencyConverter.addConversionRates(','',$contents);
        $contents = str_replace(');','',$contents);
        $obj = json_decode($contents,true);


then loop the content by 
foreach($obj['list']['resources'] as $key0 => $value0){

}

我更喜歡使用file_get_contents來獲取htmlpreg_match_all來清理json ,即:

<?php
$json = file_get_contents("http://finance.yahoo.com/connection/currency-converter-cache?date=20140113");
preg_match_all('/\((.*)\);/si', $json, $json, PREG_PATTERN_ORDER);
$json =  $json[1][0];
$json = json_decode($json,true);

foreach ($json["list"]["resources"] as $resource){
    echo $resource["resource"]["fields"]["date"];
    echo $resource["resource"]["fields"]["price"];
    echo $resource["resource"]["fields"]["symbol"];
    echo $resource["resource"]["fields"]["price"];
}

注意:

我已經測試了代碼,它可以按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM