當前位置: 首頁> 最新文章列表> 使用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); // 輸出為空數組