PHP获取GET参数主要通过$_GET超全局数组,它自动解析URL查询字符串中的键值对;推荐用isset()或空合并操作符(??)判断存在性,并配合filter_input()、htmlspecialchars()等进行安全过滤与转义。

PHP 获取 GET 请求参数主要通过 $_GET 超全局数组,它自动解析 URL 查询字符串(query string)中的键值对。只要请求是标准的 HTTP GET 方法且参数以 ?key=value&key2=value2 形式附加在 URL 后,PHP 就会自动填充该数组。
直接读取单个 GET 参数
最常用的方式是通过数组下标访问:
-
$_GET['name']获取 URL 中?name=张三的值 - 若参数不存在,直接访问会触发
Notice: Undefined index,建议先判断 - 推荐写法:
$name = $_GET['name'] ?? '';(PHP 7.0+ 空合并操作符) - 或更严谨:
$name = isset($_GET['name']) ? trim($_GET['name']) : '';
安全过滤与类型转换
GET 参数来自用户输入,必须过滤和验证:
- 用
filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT)过滤数字型参数 - 获取整数并默认为 0:
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) ?: 0; - 过滤字符串并去除首尾空格:
$keyword = trim(filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING) ?: ''); - 注意:
FILTER_SANITIZE_STRING在 PHP 8.1+ 已废弃,建议改用htmlspecialchars()或正则白名单处理
批量获取并遍历所有 GET 参数
适用于调试、日志记录或动态处理多个参数:
立即学习“PHP免费学习笔记(深入)”;
-
print_r($_GET);可查看全部参数(开发时用,生产环境避免直接输出) - 遍历示例:
foreach ($_GET as $key => $value) {<br> if (is_string($value)) {<br> $clean[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');<br> }<br>} - 注意:不要直接将
$_GET数组用于 SQL 查询或 HTML 输出,必须逐项过滤
处理特殊字符与编码问题
中文、空格、符号等在 URL 中会被编码(如 %E4%BD%A0%E5%A5%BD),PHP 默认已自动解码:
-
$_GET中的值已是 UTF-8 解码后的字符串(前提是页面和服务器编码一致) - 确保 HTML 页面声明了
<meta charset="UTF-8"> - Apache/Nginx 需配置默认字符集为 UTF-8;PHP 文件本身也应保存为 UTF-8 无 BOM 格式
- 若出现乱码,检查浏览器地址栏中参数是否被错误二次编码(如
%25E4%25BD%25A0),说明编码重复了



















