(PHP 4, PHP 5, PHP 7)
parse_url – 解析 URL,返回其组成部分
说明
parse_url
( string $url
[, int $component = -1
] ) : [mixed](php7/language.pseudo-types)
本函数解析一个 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](php7/language.types.string)。 (除了指定为 PHP_URL_PORT 后,将返回一个 [integer](php7/language.types.integer) 的值)。
返回值
对严重不合格的 URL,parse_url() 可能会返回
FALSE。
如果省略了 component 参数,将返回一个关联数组 [array](php7/language.types.array),在目前至少会有一个元素在该数组中。数组中可能的键有以下几种:
scheme – 如 http
host
port
user
pass
path
query – 在问号 ? 之后
fragment – 在散列符号 # 之后
如果指定了 component 参数,
parse_url() 返回一个 [string](php7/language.types.string) (或在指定为 PHP_URL_PORT 时返回一个 [integer](php7/language.types.integer))而不是 [array](php7/language.types.array)。如果 URL 中指定的组成部分不存在,将会返回 NULL。
更新日志
版本
说明
5.4.7
修复了 host 在 协议 省略时的识别。
5.3.3
在 URL 解析失败时将不会产生 E_WARNING 级别的错误。
5.1.2
增加了参数 component。
范例
Example #1 parse_url() 例子
$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
Example #2 parse_url() 解析丢失协议的例子
$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:///…)。其它任何协议都不能这样。
参见
[pathinfo()](php7/function.pathinfo) – 返回文件路径的信息
[parse_str()](php7/function.parse-str) – 将字符串解析成多个变量
[http_build_query()](php7/function.http-build-query) – 生成 URL-encode 之后的请求字符串
http_build_url()
[dirname()](php7/function.dirname) – 返回路径中的目录部分
[basename()](php7/function.basename) – 返回路径中的文件名部分
» RFC 3986