在日常開發中,我們經常需要處理URL 中的參數,特別是在進行接口開發、網頁跳轉或鏈接解析時。如果你使用的是PHP 語言, parse_url和parse_str這兩個函數將會是你處理URL 的利器。
本篇文章將帶你了解如何使用parse_url函數提取URL 中的query 部分,然後再通過parse_str函數將其轉換成PHP 的數組,輕鬆訪問各個參數值。
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也同樣是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數組方便地訪問。
在真實場景中,你還需要做容錯處理,以防URL 中根本沒有query 參數:
$url = "https://gitbox.net/home";
$parsedUrl = parse_url($url);
$queryParams = [];
if (isset($parsedUrl['query'])) {
parse_str($parsedUrl['query'], $queryParams);
}
print_r($queryParams); // 輸出為空數組