1. 程式人生 > >解析url函式parse_url()

解析url函式parse_url()

解析url函式parse_url()

(PHP 4, PHP 5, PHP 7)

parse_url — 解析 URL,返回其組成部分

mixed parse_url ( string $url [, int $component = -1 ] )

本函式解析一個 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_PATHPHP_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

Example #1 parse_url() 例子

 

複製程式碼

<?php
$url = 'http://username:[email protected]/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

複製程式碼

Example #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"
}

複製程式碼

註釋

Note: 本函式不能用於相對 URL。

Note: parse_url() 是專門用來解析 URL 而不是 URI 的。不過為遵從 PHP 向後相容的需要有個例外,對 file:// 協議允許三個斜線(file:///...)。其它任何協議都不能這樣。