發佈日期:
如何在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. 其他的工作,就是看要怎樣使用有關的資料。
發佈留言