当前位置:首页 > PHP

php实现天气

2026-02-15 01:49:02PHP

使用PHP获取天气数据

通过PHP获取天气数据通常需要调用第三方天气API。以下是几种常见的方法:

方法一:使用OpenWeatherMap API

注册OpenWeatherMap账号并获取API密钥。使用PHP的file_get_contents或cURL请求数据。

$apiKey = '你的API密钥';
$city = 'Beijing';
$url = "http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey&units=metric";

$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data) {
    echo "当前温度: " . $data['main']['temp'] . "°C";
    echo "天气状况: " . $data['weather'][0]['description'];
}

方法二:使用心知天气API

php实现天气

心知天气提供中文天气数据服务,适合国内项目。

$apiKey = '你的API密钥';
$city = '北京';
$url = "https://api.seniverse.com/v3/weather/now.json?key=$apiKey&location=$city&language=zh-Hans";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if (isset($data['results'])) {
    echo "当前温度: " . $data['results'][0]['now']['temperature'] . "°C";
    echo "天气状况: " . $data['results'][0]['now']['text'];
}

方法三:使用和风天气API

和风天气提供丰富的天气数据,包括预报和实时天气。

php实现天气

$apiKey = '你的API密钥';
$city = '101010100'; // 城市ID
$url = "https://devapi.qweather.com/v7/weather/now?location=$city&key=$apiKey";

$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data && $data['code'] == '200') {
    echo "当前温度: " . $data['now']['temp'] . "°C";
    echo "体感温度: " . $data['now']['feelsLike'] . "°C";
}

前端展示天气数据

将获取的天气数据通过HTML和CSS展示给用户。

<div class="weather-card">
    <h3><?php echo $city; ?>天气</h3>
    <div class="temp"><?php echo $temp; ?>°C</div>
    <div class="condition"><?php echo $condition; ?></div>
</div>

<style>
.weather-card {
    border: 1px solid #ddd;
    padding: 20px;
    border-radius: 8px;
    width: 200px;
    text-align: center;
}
.temp {
    font-size: 24px;
    font-weight: bold;
}
.condition {
    color: #666;
}
</style>

缓存天气数据

为避免频繁调用API,可以将天气数据缓存到文件或数据库中。

$cacheFile = 'weather_cache.json';
$cacheTime = 3600; // 1小时

if (file_exists($cacheFile) && time() - filemtime($cacheFile) < $cacheTime) {
    $data = json_decode(file_get_contents($cacheFile), true);
} else {
    $data = fetchWeatherData(); // 调用上述API获取数据
    file_put_contents($cacheFile, json_encode($data));
}

错误处理

添加错误处理机制,确保API请求失败时用户体验不受影响。

try {
    $response = file_get_contents($url);
    if ($response === false) {
        throw new Exception("无法获取天气数据");
    }
    $data = json_decode($response, true);
    if (!$data) {
        throw new Exception("天气数据解析失败");
    }
} catch (Exception $e) {
    echo "天气服务暂时不可用: " . $e->getMessage();
    // 可以显示缓存的旧数据或默认信息
}

通过以上方法,可以在PHP中实现天气数据的获取和展示。选择适合的天气API并根据需求进行定制开发。

标签: 天气php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('lo…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HT…