2015-10-12 5 views
-1

Как код, который я пробовал и путем пробного удаления, чтобы получить содержимое json из возвращаемого значения, ниже метод, который я использовал.Каков правильный способ анализа валюты yahoo http://finance.yahoo.com/connection/currency-converter-cache?date?

$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){ 

} 
+1

Эта конечная точка предназначена для использования с javascript. «Неизвестный формат», о котором вы говорите, - это функция обратного вызова, вызываемая при ударе этой конечной точки, и вы используете их фреймворк. – castis

ответ

3

Я предпочитаю использовать file_get_contents для получите html и preg_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"]; 
} 

Примечание:

Я проверил код и он работает как задумано.