1. 什么是 URL
URL(Uniform Resource Locator)即统一资源定位符,是互联网上用来描述和定位资源(如文档、图片等)的一种标识方式。一个 URL 通常包括以下几个部分:
协议类型(如 HTTP、FTP、TELNET 等)
服务器地址或域名(如 www.google.com)
端口号(如果访问的不是默认端口)
文件路径(如 index.html)
查询参数(即 URL 后面的 ?key1=value1&key2=value2)
2. URL 解析
在 PHP 中,我们可以使用一些内置函数来对 URL 进行解析,以获取其中的参数和值。
2.1. parse_url 函数
parse_url 函数可将一个 URL 解析成数组的形式,数组中包含了该 URL 的各个部分。
$url = "https://www.google.com/search?q=php+parse+url&oq=php+parse+url";
$parsed_url = parse_url($url);
print_r($parsed_url);
上面代码的输出结果如下:
{
"scheme": "https",
"host": "www.google.com",
"path": "/search",
"query": "q=php+parse+url&oq=php+parse+url"
}
可以看到,数组中的各个 key 就代表了 URL 的各部分。例如,上面的 "scheme" 代表协议类型,"host" 代表服务器地址,"query" 代表查询参数。
2.2. parse_str 函数
parse_str 函数可以将查询参数(即 URL 中?后面的部分)解析成数组的形式。
$query_string = "q=php+parse+url&oq=php+parse+url";
parse_str($query_string, $query_params);
print_r($query_params);
上面代码的输出结果如下:
{
"q": "php parse url",
"oq": "php parse url"
}
可以看到,parse_str 函数将查询参数解析成了一个关联数组。
3. 将 URL 参数转成数组
在 PHP 中,我们可以根据上面两个函数的结果,将 URL 中的各个参数解析成一个数组。
$url = "https://www.example.com/search?q=php+parse+url&filter=recent";
$parsed_url = parse_url($url);
parse_str($parsed_url['query'], $query_params); // 注意:$query_params 为引用传递
print_r($query_params);
上面代码的输出结果如下:
{
"q": "php parse url",
"filter": "recent"
}
可以看到,我们先用 parse_url 函数获取到了 URL 的各个部分,然后用 parse_str 函数将查询参数解析成了一个关联数组。这样,我们就可以方便地获取 URL 参数了。