parse_url

(PHP 4, PHP 5, PHP 7)

parse_url解析 URL,返回其组成部分

说明

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

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。

参数

url

要解析的 URL。无效字符将使用 _ 来替换。

component

指定 PHP_URL_SCHEMEPHP_URL_HOSTPHP_URL_PORTPHP_URL_USERPHP_URL_PASSPHP_URL_PATHPHP_URL_QUERYPHP_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

范例

Example #1 parse_url() 例子

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

print_r(parse_url($url));

echo 
parse_url($urlPHP_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:///...)。其它任何协议都不能这样。

参见

相关文章
php 日历 函数 返回某个历法中某年中某月的天数php ftp 函数 返回指定文件的大小php geoip 函数 返回给定的国家和地区代码组合所对应的地区名称php php 选项/信息 函数 返回模块函数名称的数组php url 函数 从一个文件中提取所有的 meta 标签 content 属性,返回一个数组php gd 和图像处理 函数 从给定的 gd2 文件或 url 中的部分新建一图像php math 函数 返回 log 1 + number ,甚至当 number 的值接近零也能计算出准确结果php 别名和过时的 mysqli 函数 禁用rpl解析php oci8 函数 返回字段名php oci8 函数 返回结果列的数目php openssl 函数 解析一个x509证书并作为一个数组返回信息php openssl 函数 解析一个x.509证书并返回一个资源标识符php 字符串 函数 将字符串解析成多个变量php url 函数 解析 url,返回其组成部分php pcntl 函数 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。php postgresql 函数 返回和某连接关联的主机名php php 选项/信息 函数 返回从额外 ini 目录里解析的 .ini 文件列表php date/time 函数 返回当前的 unix 时间戳php mysqli 返回最近函数调用的错误代码php reflectionfunctionabstract 返回本身的匿名函数
关注编程学问公众号