IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何在PHP中‧取得雅虎的天氣資料

今天又有點新玩意,就是要取得某個地方的天氣資訊,再放到自己的網站上面。起初想用GOOGLE的API,不過原來那個已經不能用了。再看看雅虎的,原來還可以使用,那就用雅虎好了。

01. 第一步驟,當然是看看雅虎的可提供到的資訊。

02. 要使用雅虎的資料,第一樣的工作需要知道地方的編碼(Location Code),按圖中『EXTEND FORECASE』位置。

03. 留意URL位置,CHXX0049,便是您要的地方的編碼。

04. 在瀏覽器,新開一頁面,鍵入『http://weather.yahooapis.com/forecastrss?p=CHXX0049&u=c』,便會看到地方的RSS資訊。

05. 打開此頁面的原始碼,我們需要的,就是選取部入的資料。

06. 建立一個新的PHP檔案,並貼上以下內容。其中要留意的,是$weather->load那一行,需輸入地方的編碼,如今次例子中的CHXX0049。後面的u=c,是用來說明顯示的溫度,以攝氏來代表。

<?php
$weather = new DOMDocument();
$weather->load('http://weather.yahooapis.com/forecastrss?p=CHXX0049&u=c');
$ch = $weather->getElementsByTagName("channel");
foreach($ch as $channel) {
$desc = $channel->getElementsByTagName("item");
foreach($desc as $description) {
$node = $description->getElementsByTagName("description");
$info = $node->item(0)->nodeValue;
$result = str_replace("<br />", "<BR />", $info);
$data = explode( '<BR />', $result);
echo $data[0];
echo $data[2];
echo $data[5];
echo $data[6];
}
}
?>

此程式的主要目的,是先取得RSS檔案中『channel』標籤內的資料,再在其內容中,取得『item』標籤內的資料,最後是再在其內容中,取得『description』標籤內的資料。

07. 看看取回的『description』標籤內容。要個別取得需要的資料,似乎最好的是利用<br />作區分,但在『description』標籤內容中,既有細楷的<br />,也有大楷的<BR />。

08. 所以程式會把『description』標籤內容,所有的<BR />,全部轉為小寫,再按需要,取得天氣部份的資訊。

09. 取得天氣部份資訊的原始碼。

10. 其他的工作,就是看要怎樣使用有關的資料。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *