当前位置:首页 > PHP

php实现天气回复

2026-02-16 14:02:42PHP

使用 PHP 实现天气回复功能

PHP 可以通过调用天气 API 获取实时天气数据,并生成回复信息。以下是实现方法:

选择天气 API 服务

常见的免费天气 API 包括:

注册账号并获取 API Key。

安装必要的库

使用 cURL 或 Guzzle HTTP 客户端发送 API 请求:

composer require guzzlehttp/guzzle

获取天气数据

示例代码使用 OpenWeatherMap API:

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

function getWeather($city) {
    $apiKey = 'YOUR_API_KEY';
    $client = new Client();

    try {
        $response = $client->get("http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey&units=metric");
        $data = json_decode($response->getBody(), true);

        return [
            'temperature' => $data['main']['temp'],
            'humidity' => $data['main']['humidity'],
            'description' => $data['weather'][0]['description']
        ];
    } catch (Exception $e) {
        return null;
    }
}
?>

生成天气回复

根据获取的数据生成回复消息:

function generateWeatherReply($city) {
    $weather = getWeather($city);

    if (!$weather) {
        return "无法获取 $city 的天气信息,请检查城市名称或稍后再试。";
    }

    return "$city 当前天气:\n"
         . "温度:{$weather['temperature']}°C\n"
         . "湿度:{$weather['humidity']}%\n"
         . "天气状况:{$weather['description']}";
}

使用示例

echo generateWeatherReply('Beijing');

输出示例:

Beijing 当前天气:
温度:23°C
湿度:45%
天气状况:晴天

处理中文城市名

如果 API 不支持中文城市名,可以使用拼音或城市 ID:

$cityMap = [
    '北京' => 'Beijing',
    '上海' => 'Shanghai'
];

$cityName = '北京';
$apiCityName = $cityMap[$cityName] ?? $cityName;

错误处理

增加更完善的错误处理机制:

try {
    // API 请求代码
} catch (GuzzleHttp\Exception\ClientException $e) {
    // 处理 4xx 错误
} catch (GuzzleHttp\Exception\ServerException $e) {
    // 处理 5xx 错误
}

缓存机制

减少 API 调用次数,可以使用文件缓存或 Redis:

function getWeatherWithCache($city, $ttl = 3600) {
    $cacheFile = "cache/{$city}.json";

    if (file_exists($cacheFile) && time() - filemtime($cacheFile) < $ttl) {
        return json_decode(file_get_contents($cacheFile), true);
    }

    $weather = getWeather($city);
    file_put_contents($cacheFile, json_encode($weather));

    return $weather;
}

安全考虑

  • 验证用户输入,防止 SQL 注入或 XSS 攻击
  • 不要在前端暴露 API Key
  • 对 API 响应进行验证

以上方法提供了完整的 PHP 天气回复实现方案,可以根据实际需求调整 API 选择和数据展示方式。

php实现天气回复

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

相关文章

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $n…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $d…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面…

php实现文件的下载

php实现文件的下载

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

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…