URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(c.biancheng.net)或者 IP 地址,例如(127.0.0.1)。
URL 由三部分组成,分别是资源类型、存放资源的主机域名、资源文件名,其格式如下所示:
protocol://prefix.domain:port/path/filename
格式说明如下:
- protocol:用于指定使用的传输协议(常见的传输协议有 http、https、ftp 等);
- prefix:用于定义域名前缀(例如 www);
- domain:用于定义域名(如 biancheng.net);
- dort:用于定义主机上的端口号(默认值为 80);
- path:由零或多个“/”符号隔开的字符串,一般用于表示服务器上的某个目录或文件地址。如果省略则表示服务器的根目录;
- filename:用于定义文件或资源的名称(例如 index.html)。
URL 编码是一种浏览器用来打包表单输入数据的格式,是对用地址栏传递参数进行的一种编码规则。如果参数中带有空格,在用 URL 传递参数时就会发生错误,而用 URL 编码后,空格会被转换成“%20”这样错误就不会发生了。另外对 URL 进行编码,可以对传递的参数起到隐藏作用。
对 URL 传递的参数进行编码
在 PHP中,对字符串进行 URL 编码可以使用 urlencode() 函数来完成,该函数的语法格式如下:
urlencode(string $str)
其中,$str 为要编码的字符串。
【示例】使用 urlencode() 函数对 URL 进行编码。
<?php $url = 'http://c.biancheng.net/index.php?name='; $str = 'C语言中文网'; $str = urlencode($str); $url .= $str; echo '编码后的 url:'.$url; ?>
运行结果如下:
编码后的 url:http://c.biancheng.net/index.php?name=C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
对于服务器而言,编码前后的字符串并没有什么区别,服务器能够自动识别,这里是为了讲解 URL 编码的使用方法,而在实际应用中,对一些非保密性的参数不需要进行编码,需要根据实际情况有选择地使用。
对 URL 编码的字符串进行解码
对于 URL 传递的参数可以直接使用 $_GET[] 获取即可,但是对于进行了 URL 加密的字符串,则需要通过 urldecode() 函数对获取后的字符串进行解码才行。该函数的语法格式如下:
urldecode(string $str)
其中,$str 为要解码的字符串。
【示例】使用 urldecode() 对编码的字符串进行解码。
<?php $url = 'http://c.biancheng.net/index.php?name='; $str = 'C语言中文网'; $str = urlencode($str); $url .= $str; echo '编码后的 url:'.$url.'<br>'; echo '解码后的 url:'.urldecode($url); ?>
运行结果如下:
编码后的 url:http://c.biancheng.net/index.php?name=C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
解码后的 url:http://c.biancheng.net/index.php?name=C语言中文网
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/24085.html