首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實作天氣預報查詢功能教學

     編輯:PHP 相關知識

PHP 天氣預報抓取實作

本文示範如何使用 PHP 從百度搜尋結果中解析天氣資訊,實作簡易的城市天氣查詢功能。

核心實作邏輯

  1. 接收使用者輸入的城市名稱(預設為「菏澤」)
  2. 構造百度搜尋 URL:https://www.baidu.com/s?wd={城市}天氣
  3. 使用 file() 讀取搜尋結果頁面
  4. 以正規表示式擷取「今天」至「今日氣象指數」之間的內容
  5. 移除 HTML 標籤與多餘文字,輸出純文字天氣資訊

完整程式碼範例

<form method="post">
  <input name="a" type="text" id="a" />
  <input type="submit" name="Submit" value="查" />
</form>

<?php
$city = $_REQUEST["a"];
if ($city == "") {
    $city = "菏澤";
}

$url = 'https://www.baidu.com/s?wd=' . urlencode($city . '天氣');
$lines_array = file($url);
$lines_string = implode('', $lines_array);

// 使用 preg_match 替代已棄用的 eregi
if (preg_match('/今天((.*)今日氣象指數/s', $lines_string, $body)) {
    $weather = strip_tags($body[0]);
    $weather = str_replace(" 今日氣象指數", "", $weather);
    $weather = str_replace(" ", "", $weather);
    echo $city . $weather;
}
?>

重要改進說明

  • 編碼處理:使用 urlencode() 處理中文城市名,避免 URL 錯誤
  • 正規表示式更新:eregi() 已在 PHP 5.3.0 棄用,改用 preg_match() 搭配 /i 修飾符
  • 錯誤處理:加入 preg_match 回傳值判斷,避免解析失敗時出現 Notice

現代化替代方案

由於搜尋引擎頁面結構頻繁變動,建議改用官方天氣 API:

  • 和風天氣:提供免費額度,支援 HTTPS、JSON 格式
  • OpenWeatherMap:國際知名,資料豐富
  • 中央氣象局開放資料:台灣地區最權威來源

API 串接範例(以和風天氣為例)

<?php
$apiKey = "YOUR_API_KEY";
$city = "北京";
$url = "https://devapi.qweather.com/v7/weather/now?location={$city}&key={$apiKey}";

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_TIMEOUT => 10
]);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if ($data['code'] === '200') {
    echo "{$city} 現在溫度:{$data['now']['temp']}°C,{$data['now']['text']}";
}
?>

透過官方 API 可獲得結構化、穩定、可靠的天氣資料,是生產環境的最佳選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved