(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — 解析 URL,返回其組成部分
本函數(shù)解析一個 URL 并返回一個關(guān)聯(lián)數(shù)組,包含在 URL 中出現(xiàn)的各種組成部分。
本函數(shù)不是用來驗(yàn)證給定 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 的值)。
對嚴(yán)重不合格的 URL,parse_url() 可能會返回
false。
如果省略了 component 參數(shù),將返回一個關(guān)聯(lián)數(shù)組 array,在目前至少會有一個元素在該數(shù)組中。數(shù)組中可能的鍵有以下幾種:
? 之后
# 之后
如果指定了 component 參數(shù),
parse_url() 返回一個 string (或在指定為 PHP_URL_PORT 時返回一個 integer)而不是 array。如果 URL 中指定的組成部分不存在,將會返回 null。
| 版本 | 說明 |
|---|---|
| 5.4.7 | 修復(fù)了 host 在 協(xié)議 省略時的識別。 |
| 5.3.3 |
在 URL 解析失敗時將不會產(chǎn)生 E_WARNING 級別的錯誤。
|
| 5.1.2 | 增加了參數(shù) 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() 解析丟失協(xié)議的例子
<?php
$url = '//www.example.com/path?googleguy=googley';
// 在 5.4.7 之前這會輸出路徑 "http://www.example.com/path"
var_dump(parse_url($url));
?>
以上例程會輸出:
注意:
本函數(shù)不能用于相對 URL。
注意:
parse_url() 是專門用來解析 URL 而不是 URI 的。不過為遵從 PHP 向后兼容的需要有個例外,對 file:// 協(xié)議允許三個斜線(file:///...)。其它任何協(xié)議都不能這樣。