📅  最后修改于: 2023-12-03 15:39:07.443000             🧑  作者: Mango
URL(Uniform Resource Locator)是一个用于标识互联网上资源(如网页或文件)的字符串。它由若干个部分组成,包括协议、主机名、端口号、路径、查询字符串和片段标识符等。
例如下面这个 URL 标识了百度搜索的网址:
https://www.baidu.com/s?wd=php
其中,“https” 是协议名,“www.baidu.com” 是主机名,“/s” 是路径,“?wd=php” 是查询字符串。
PHP 内置了几个用于处理 URL 的函数,包括 parse_url
、urlencode
和 urldecode
等。
parse_url
函数可以将一个完整的 URL 字符串解析成一个关联数组,包括其各个组成部分。例如:
$url = 'https://www.baidu.com/s?wd=php';
$parsed_url = parse_url($url);
print_r($parsed_url);
输出:
Array
(
[scheme] => https
[host] => www.baidu.com
[path] => /s
[query] => wd=php
)
可以看到,parse_url
解析出了 URL 中的协议、主机名、路径和查询字符串。
由于 URL 中可能含有特殊字符,如空格、+
、&
和 =
等,因此需要对其进行编码和解码。
urlencode
函数可以对字符串进行 URL 编码,将特殊字符转义成 %
后跟着两个十六进制数字。例如:
$str = 'hello world & php';
$urlencoded = urlencode($str);
echo $urlencoded; // 输出:hello+world+%26+php
可以看到,空格被转义成了 +
,&
被转义成了 %26
。
urldecode
函数可以对 URL 编码后的字符串进行解码,将 %
后跟着两个十六进制数字的字符转义回原来的字符。例如:
$urlencoded = 'hello+world+%26+php';
$str = urldecode($urlencoded);
echo $str; // 输出:hello world & php
可以看到,+
被解码成了空格,%26
被解码成了 &
。