PHP parse_url() 函数解析 URL 并返回一个包含其各个组件的关联数组。
语法
parse_url(url, component)
参数
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),以字符串(如果是 PHP_URL_PORT,则为 int)形式检索特定 URL 组件。 |
返回值
- 如果参数是格式错误的URL,则返回false。
- 如果参数component省略,返回一个关联数组。数组中至少存在一个元素。该数组中的潜在键有:
- scheme - 例如http
- host
- port
- user
- pass
- path
- query-问号之后?
- fragment - 井号之后#
- 如果指定了组件参数,则函数返回一个字符串(或一个 int,在 PHP_URL_PORT 的情况下)而不是数组。如果给定的 URL 中不存在请求的组件,则返回 null。
注意:组件中的控制字符是替换为下划线 (_)。
示例:parse_url()示例
下面的示例显示了parse_url()函数的用法。
<?php
$url = 'https://www.yxjc123.com/index.php?page=PHP#examples';
//解析url
print_r(parse_url($url));
echo "\n";
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
(
[scheme] => https
[host] => www.yxjc123.com
[path] => /index.php
[query] => page=PHP
[fragment] => examples
)
string(5) "https"
NULL
NULL
string(25) "www.yxjc123.com"
NULL
string(10) "/index.php"
string(8) "page=PHP"
string(8) "examples"
示例:缺少http/https的 parse_url() 示例
考虑下面的示例,其中URL 中缺少参数http/https协议。
<?php
$url = '//www.yxjc123.com/index.php?page=PHP#examples';
//解析url
print_r(parse_url($url));
?>
上述代码的输出将为:
Array
(
[host] => www.yxjc123.com
[path] => /index.php
[query] => page=PHP
[fragment] => examples
)