parse_url(string $url): array|false 用於解析 URL 字串,回傳包含各組件的關聯陣列。它不驗證 URL 合法性,僅進行字串分解;不完整的 URL 也會嘗試解析。支援 PHP 4、PHP 5 及所有後續版本。
成功時回傳關聯陣列,可能包含以下鍵值(至少有一個):
| 鍵名 | 說明 | 範例 |
|---|---|---|
| scheme | 協議 | http、https、ftp |
| host | 主機名 | example.com |
| port | 連接埠 | 80、443 |
| user | 使用者名稱 | username |
| pass | 密碼 | password |
| path | 路徑 | /path/to/resource |
| query | 查詢字串(? 之後) | arg=value&foo=bar |
| fragment | 錨點(# 之後) | anchor |
若 URL 嚴重不合法,回傳 false 並觸發 E_WARNING。
<?php
$url = 'https://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
輸出結果:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
../path/file.php 會解析失敗。file:// 協議允許三斜線(file:///path),其他協議不允許。query 為原始字串,需搭配 parse_str() 轉為陣列。TypeError,請確保參數型別正確。<?php
$url = 'https://api.example.com/search?q=php+parse_url&page=2&sort=desc';
$parts = parse_url($url);
parse_str($parts['query'], $queryArray);
print_r($queryArray);
/*
Array
(
[q] => php parse_url
[page] => 2
[sort] => desc
)
*/
?>
parse_url() 是 PHP 處理 URL 的基石函數,輕量、快速、無依賴。掌握其回傳結構與限制,能避免手動正則解析的錯誤與效能損耗。記住:它只負責「拆解」,驗證與進一步處理需自行實作。