在介绍 URL 编码与解码之前,首先来了解一下什么是 URL?
URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(www.cdsy.xyz)或者 IP 地址,例如(127.0.0.1)。
URL 由三部分组成,分别是资源类型、存放资源的主机域名、资源文件名,其格式如下所示:
格式说明如下:
在 PHP中,对字符串进行 URL 编码可以使用 urlencode() 函数来完成,该函数的语法格式如下:
其中,$str 为要编码的字符串。
【示例】使用 urlencode() 函数对 URL 进行编码。
<?php
$url = 'http://www.cdsy.xyz/index.php?name=';
$str = '城东书院';
$str = urlencode($str);
$url .= $str;
echo '编码后的 url:'.$url;
?>
运行结果如下:
对于服务器而言,编码前后的字符串并没有什么区别,服务器能够自动识别,这里是为了讲解 URL 编码的使用方法,而在实际应用中,对一些非保密性的参数不需要进行编码,需要根据实际情况有选择地使用。
对于 URL 传递的参数可以直接使用 $_GET[] 获取即可,但是对于进行了 URL 加密的字符串,则需要通过 urldecode() 函数对获取后的字符串进行解码才行。该函数的语法格式如下:
其中,$str 为要解码的字符串。
【示例】使用 urldecode() 对编码的字符串进行解码。
<?php
$url = 'http://www.cdsy.xyz/index.php?name=';
$str = '城东书院';
$str = urlencode($str);
$url .= $str;
echo '编码后的 url:'.$url.'<br>';
echo '解码后的 url:'.urldecode($url);
?>
运行结果如下: