如果我們有一段網址,像是:http://username:password@hostname:9090/path?arg=value#anchor 這樣的網址,想要去分析它的內容我們可以使用 php 提供的 parse_url 來幫我們處理。

解析之後可以分為這些部分:

  • scheme - e.g. http
  • host - 網域
  • port - 埠
  • user
  • pass
  • path - 路徑
  • query -  ? 後帶的參數
  • fragment -  # 後的值

所以像剛剛那段網址我們經由解析後會變這樣:

$url = 'http://username:password@hostname:9090/path?arg=value#anchor';

var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));

array(8) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(8) "hostname"
  ["port"]=>
  int(9090)
  ["user"]=>
  string(8) "username"
  ["pass"]=>
  string(8) "password"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(9) "arg=value"
  ["fragment"]=>
  string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"

這樣我們就可以依據拆解出來的內容來處理網址了。