php中一个好用的函数parse_url,特别方便用来解析URL,该函数将URL解析为一个关联数组,该关联数组包含URL中出现的各种组成部分,组成部分为:
scheme - 如 http
host
port
user
pass
path
query - 在问号 ? 之后
fragment - 在散列符号 # 之后
parse_url函数不会去验证给定 URL 的合法性,它只是将其分解为上面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。
语法
array parse_url(string $url,int $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 的其中一个来获取 URL 中指定的部分的 string。 (除了指定为 PHP_URL_PORT 后,将返回一个 integer 的值)。
实例
$url = "http://blog.xxx.com:8080/index.php?name=wxp&id=2";
$parts = parse_url($url);
print_r($parts);
?>
运行结果为:
Array
(
[scheme] => http
[host] => blog.xxx.com
[port] => 8080
[path] => /index.php
[query] => name=wxp&id=2
)
再看一个复杂一点的实例:
$url = 'http://hello:manong@jiaochen/blog?name=wxp#student';
print_r(parse_url($url));
echo "
";
echo parse_url($url, PHP_URL_PATH);
?>
运行结果如下:
Array
(
[scheme] => http
[host] => jiaochen
[user] => hello
[pass] => manong
[path] => /blog
[query] => name=wxp
[fragment] => student
)
/blog
从这个代码可以看出,我们可以设置第二个参数来获取URL中的各个部分。第二个参数的值可以为:
PHP_URL_SCHEME
PHP_URL_HOST
PHP_URL_PORT
PHP_URL_USER
PHP_URL_PASS
PHP_URL_PATH
PHP_URL_QUERY
PHP_URL_FRAGMENT