PHP urldenodeur()与ldecode():对URL参数进行编码与解码
在介绍 URL 编码与解码之前,首先来了解一下什么是 URL?
URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(www.xinbaoku.com)或者 IP 地址,例如(127.0.0.1)。
URL 由三部分组成,分别是资源类型、存放资源的主机域名、资源文件名,其格式如下所示:
【示例】使用 urlencode() 函数对 URL 进行编码。
【示例】使用 urldecode() 对编码的字符串进行解码。
URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(www.xinbaoku.com)或者 IP 地址,例如(127.0.0.1)。
URL 由三部分组成,分别是资源类型、存放资源的主机域名、资源文件名,其格式如下所示:
protocol://prefix.domain:port/path/filename
格式说明如下:- protocol:用于指定使用的传输协议(常见的传输协议有 http、https、ftp 等);
- prefix:用于定义域名前缀(例如 www);
- domain:用于定义域名(如 xinbaoku.com);
- dort:用于定义主机上的端口号(默认值为 80);
- path:由零或多个“/”符号隔开的字符串,一般用于表示服务器上的某个目录或文件地址。如果省略则表示服务器的根目录;
- filename:用于定义文件或资源的名称(例如 index.html)。
URL 编码是一种浏览器用来打包表单输入数据的格式,是对用地址栏传递参数进行的一种编码规则。如果参数中带有空格,在用 URL 传递参数时就会发生错误,而用 URL 编码后,空格会被转换成“%20”这样错误就不会发生了。另外对 URL 进行编码,可以对传递的参数起到隐藏作用。
对 URL 传递的参数进行编码
在 PHP中,对字符串进行 URL 编码可以使用 urlencode() 函数来完成,该函数的语法格式如下:urlencode(string $str)
其中,$str 为要编码的字符串。【示例】使用 urlencode() 函数对 URL 进行编码。
<?php $url = 'https://www.xinbaoku.com/index.php?name='; $str = '新宝库'; $str = urlencode($str); $url .= $str; echo '编码后的 url:'.$url; ?>运行结果如下:
编码后的 url:https://www.xinbaoku.com/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 = 'https://www.xinbaoku.com/index.php?name='; $str = '新宝库'; $str = urlencode($str); $url .= $str; echo '编码后的 url:'.$url.'<br>'; echo '解码后的 url:'.urldecode($url); ?>运行结果如下:
编码后的 url:https://www.xinbaoku.com/index.php?name=C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
解码后的 url:https://www.xinbaoku.com/index.php?name=新宝库
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算