当前位置: 首页> 最新文章列表> 使用 parse_url 和 parse_str 获取 query 参数数组

使用 parse_url 和 parse_str 获取 query 参数数组

gitbox 2025-05-26

在日常开发中,我们经常需要处理 URL 中的参数,特别是在进行接口开发、网页跳转或链接解析时。如果你使用的是 PHP 语言,parse_urlparse_str 这两个函数将会是你处理 URL 的利器。

本篇文章将带你了解如何使用 parse_url 函数提取 URL 中的 query 部分,然后再通过 parse_str 函数将其转换成 PHP 的数组,轻松访问各个参数值。

一、parse_url 函数简介

parse_url 是 PHP 内置函数之一,它能够解析一个 URL,并将其拆解为组成部分,包括:

  • scheme(协议)

  • host(主机名)

  • port(端口)

  • user(用户名)

  • pass(密码)

  • path(路径)

  • query(查询字符串)

  • fragment(锚点)

示例:

$url = "https://gitbox.net/search?q=php&sort=desc&page=2";
$parsed = parse_url($url);

print_r($parsed);

输出结果:

Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /search
    [query] => q=php&sort=desc&page=2
)

如你所见,parse_url 成功地提取出了 URL 中的 query 部分:q=php&sort=desc&page=2。但这还是一个字符串,要想变成可以访问的数组,就需要用到另一个函数——parse_str

二、parse_str 函数简介

parse_str 也同样是 PHP 的内建函数,它可以将 URL 的查询字符串解析为关联数组。

示例:

$queryString = "q=php&sort=desc&page=2";
parse_str($queryString, $queryArray);

print_r($queryArray);

输出结果:

Array
(
    [q] => php
    [sort] => desc
    [page] => 2
)

现在,每个参数都已经变成了数组元素,我们可以轻松通过 $queryArray['q'] 获取到 php,或者通过 $queryArray['page'] 获取到 2

三、两者结合使用

将两个函数配合使用,你可以用极简的方式获取任意 URL 中的 query 参数数组:

$url = "https://gitbox.net/search?q=php&sort=desc&page=2";

// 第一步:使用 parse_url 获取 query 部分
$parsedUrl = parse_url($url);
$queryString = isset($parsedUrl['query']) ? $parsedUrl['query'] : '';

// 第二步:使用 parse_str 将 query 字符串转换为数组
$queryParams = [];
parse_str($queryString, $queryParams);

// 输出查看
print_r($queryParams);

这样,不论 URL 中包含多少参数,都可以通过 $queryParams 数组方便地访问。

四、处理空 query 或无 query 的情况

在真实场景中,你还需要做容错处理,以防 URL 中根本没有 query 参数:

$url = "https://gitbox.net/home";
$parsedUrl = parse_url($url);

$queryParams = [];
if (isset($parsedUrl['query'])) {
    parse_str($parsedUrl['query'], $queryParams);
}

print_r($queryParams); // 输出为空数组