2017-03-02 10 views
1

天気xmlファイル(http://www.yr.no/place/Ireland/Leinster/Dublin/forecast.xml)から現在の日付から天気を取り込もうとしています。このxmlファイルは、時刻(00:00-06:00,6:00-12:00など)ごとに各日付の天気を分割します。PHPを使用して特定の日付のXMLファイルからデータを表示

これまでのところ、私はこのコードを使用して、すべての日付のすべての天候のために必要な詳細情報を引き出すことができた:

$urlweather = ("http://www.yr.no/place/Ireland/Leinster/Dublin/forecast.xml"); 
    $dublin_weather = simplexml_load_file($urlweather); 

    echo "<table id='weather'> 
      <tr> 
      <th>Temperature</th> 
      <th>Time/Date</th> 
      <th>Forecast</th> 
      </tr>"; 

    foreach ($dublin_weather->forecast->tabular->time as $liveweather){ 

     echo (" 
     <tr> 
      <td>" .$liveweather->temperature["value"]." °C ". "</td> 
      <td>" .date_format(date_create($liveweather["from"]), "H:i") . 
      " - " .date_format(date_create($liveweather["to"]), "H:i"). "/" .date_format(date_create($liveweather["from"]), "d-m-y"). "</td> 
      <td>" .$liveweather->symbol["name"]."</td> 
     </tr>"); 
      //} 
                 } 
     echo "</table"; 

私は、現在の日付の天気だけを出力できるようにしたいと思いますその日の日付に基づいて毎日天気が更新されますが、それを把握しているようには見えません。

ご協力いただければ幸いです。

+0

これまでに何を試しましたか? http://stackoverflow.com/help/how-to-ask – dlsso

答えて

1

PHP xpathを使用すると、トリックを行う必要があります。

$urlweather = ("http://www.yr.no/place/Ireland/Leinster/Dublin/forecast.xml"); 
$dublin_weather = simplexml_load_file($urlweather); 

$matchesObj = $dublin_weather->xpath("forecast//tabular//time[contains(@from, '".date('Y-m-d',time())."')]"); // search attributes containing today's date 


echo "<table id='weather'> 
     <tr> 
     <th>Temperature</th> 
     <th>Time/Date</th> 
     <th>Forecast</th> 
     </tr>"; 

foreach ($matchesObj as $liveweather){ 

    echo (" 
    <tr> 
     <td>" .$liveweather->temperature["value"]." °C ". "</td> 
     <td>" .date_format(date_create($liveweather["from"]), "H:i") . 
     " - " .date_format(date_create($liveweather["to"]), "H:i"). "/" .date_format(date_create($liveweather["from"]), "d-m-y"). "</td> 
     <td>" .$liveweather->symbol["name"]."</td> 
    </tr>"); 
     //} 

} 

echo "</table"; 
+0

これは完全に機能しました。ありがとうございました。 PHPでXMLファイルを扱う方法をまだ学んでいるので、Xpathの方がもっとよく見えます。 –

0

あなたはちょうどここに時間を確認することができます。

foreach ($dublin_weather->forecast->tabular->time as $liveweather) { 
    // insert condition check here 
    // if ($diffDays === 0) : 
    // (or something that compares weather date today..etc) 
    echo (" 
     <tr> 
     <td>" .$liveweather->temperature["value"]." °C ". "</td> 
     <td>" .date_format(date_create($liveweather["from"]), "H:i") . 
      " - " .date_format(date_create($liveweather["to"]), "H:i"). "/" .date_format(date_create($liveweather["from"]), "d-m-y"). "</td> 
     <td>" .$liveweather->symbol["name"]."</td> 
     </tr>"); 
    //endif; 
} 

また、このオーバーフローポストを日付比較のために見ることもできます。 PHP: How to check if a date is today, yesterday or tomorrow

関連する問題