当前位置:首页 > PHP

php实现天气

2026-01-30 03:57:54PHP

使用第三方天气API实现

PHP可以通过调用第三方天气API获取天气数据。常见的免费天气API包括OpenWeatherMap、WeatherAPI、和风天气等。以下以OpenWeatherMap为例:

$apiKey = 'your_api_key';
$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['cod'] == 200) {
    $temp = $data['main']['temp'];
    $humidity = $data['main']['humidity'];
    $description = $data['weather'][0]['description'];
    echo "当前温度: $temp°C, 湿度: $humidity%, 天气状况: $description";
} else {
    echo "获取天气信息失败";
}

使用cURL替代file_get_contents

某些服务器可能禁用file_get_contents函数,可以使用cURL实现:

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

缓存天气数据

频繁调用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 = json_decode(file_get_contents($url), true);
    file_put_contents($cacheFile, json_encode($data));
}

显示天气图标

根据天气状况显示相应图标:

$weatherIcons = [
    'clear' => '☀️',
    'clouds' => '☁️',
    'rain' => '🌧️',
    'snow' => '❄️'
];

$icon = $weatherIcons[strtolower($data['weather'][0]['main'])] ?? '🌈';
echo "天气图标: $icon";

处理多城市查询

支持同时查询多个城市天气:

$cities = ['Beijing', 'Shanghai', 'Guangzhou'];
foreach ($cities as $city) {
    $url = "http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey";
    // 获取并显示每个城市天气
}

错误处理增强

添加更健壮的错误处理:

try {
    $response = file_get_contents($url);
    if ($response === false) {
        throw new Exception('API请求失败');
    }
    $data = json_decode($response, true);
    // 处理数据...
} catch (Exception $e) {
    error_log($e->getMessage());
    echo '暂时无法获取天气信息';
}

使用国内天气API

国内开发者可以考虑和风天气或心知天气API:

// 和风天气示例
$url = "https://free-api.heweather.net/s6/weather/now?location=beijing&key=your_key";

前端展示优化

将天气数据以更友好的方式展示:

php实现天气

<div class="weather-card">
    <h3><?php echo $data['name']; ?></h3>
    <div class="temp"><?php echo $data['main']['temp']; ?>°C</div>
    <div class="details">
        <span>湿度: <?php echo $data['main']['humidity']; ?>%</span>
        <span>风速: <?php echo $data['wind']['speed']; ?>m/s</span>
    </div>
</div>

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

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…