首页 > 编程笔记 > PHP笔记

PHP urldenodeur()与ldecode():对URL参数进行编码与解码

在介绍 URL 编码与解码之前,首先来了解一下什么是 URL?

URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(www.xinbaoku.com)或者 IP 地址,例如(127.0.0.1)。

URL 由三部分组成,分别是资源类型、存放资源的主机域名、资源文件名,其格式如下所示:

protocol://prefix.domain:port/path/filename

格式说明如下:

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=新宝库

所有教程

优秀文章