parse_url
(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — 解析 URL,返回其組成部分
說明
本函式解析一個 URL 並返回一個關聯陣列,包含在 URL 中出現的各種組成部分。
本函式不是用來驗證給定 URL 的合法性的,只是將其分解為下面列出的部分。不完整的 URL 也被接受,parse_url() 會嘗試儘量正確地將其解析。
參數
- 
url
- 
      要解析的 URL。無效字元將使用 _來替換。
- 
component
- 
      指定 PHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_PORT、PHP_URL_USER、PHP_URL_PASS、PHP_URL_PATH、PHP_URL_QUERY或PHP_URL_FRAGMENT的其中一個來獲取 URL 中指定的部分的 string。 (除了指定為PHP_URL_PORT后,將返回一個 integer 的值)。
返回值
   對嚴重不合格的 URL,parse_url() 可能會返回
   false。 
  
    如果省略了 component 參數,將返回一個關聯陣列 array,在目前至少會有一個元素在該陣列中。陣列中可能的鍵有以下幾種:
   
- scheme - 如 http
- host
- port
- user
- pass
- path
- 
     
      query  - 在問號 ?之後
- 
     
      fragment -  在雜湊符號 #之後
   如果指定了 component 參數,
   parse_url() 返回一個 string (或在指定為 PHP_URL_PORT 時返回一個 integer)而不是 array。如果 URL 中指定的組成部分不存在,將會返回 null。
  
更新日誌
| 版本 | 說明 | 
|---|---|
| 5.4.7 | 修復了 host 在 協議 省略時的識別。 | 
| 5.3.3 | 在 URL 解析失敗時將不會產生 E_WARNING級別的錯誤。 | 
| 5.1.2 | 增加了參數 component。 | 
範例
示例 #1 parse_url() 例子
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
以上例程會輸出:
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path
示例 #2 parse_url() 解析丟失協議的例子
<?php
$url = '//www.example.com/path?googleguy=googley';
// 在 5.4.7 之前這會輸出路徑 "//www.example.com/path"
var_dump(parse_url($url));
?>
以上例程會輸出:
array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}
註釋
注意:
本函式不能用於相對 URL。
注意:
parse_url() 是專門用來解析 URL 而不是 URI 的。不過為遵從 PHP 向後相容的需要有個例外,對 file:// 協議允許三個斜線(file:///...)。其它任何協議都不能這樣。
參見
- pathinfo() - 返回檔案路徑的資訊
- parse_str() - 將字串解析成多個變數
- http_build_query() - 產生 URL-encode 之後的請求字串
- http_build_url()
- dirname() - 返回路徑中的目錄部分
- basename() - 返回路徑中的檔名部分
- » RFC 3986