您当前的位置:首页 > 计算机 > 编程开发 > PHP

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

时间:03-01来源:作者:点击数:

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

URL 是统一资源定位系统(uniform resource locator)的缩写,是在因特网的万维网服务程序上用于指定信息位置的一种表示方法。它最初是由“蒂姆·伯纳斯·李”发明用来作为万维网的地址的。现在已经被万维网联盟编制为互联网标准 RFC1738。URL 中可以包含单词,例如(www.cdsy.xyz)或者 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://www.cdsy.xyz/index.php?name=';
    $str = '城东书院';
    $str = urlencode($str);
    $url .= $str;
    echo '编码后的 url:'.$url;
?>

运行结果如下:

编码后的 url:http://www.cdsy.xyz/index.php?name=%E5%9F%8E%E4%B8%9C%E4%B9%A6%E9%99%A2

对于服务器而言,编码前后的字符串并没有什么区别,服务器能够自动识别,这里是为了讲解 URL 编码的使用方法,而在实际应用中,对一些非保密性的参数不需要进行编码,需要根据实际情况有选择地使用。

对 URL 编码的字符串进行解码

对于 URL 传递的参数可以直接使用 $_GET[] 获取即可,但是对于进行了 URL 加密的字符串,则需要通过 urldecode() 函数对获取后的字符串进行解码才行。该函数的语法格式如下:

urldecode(string $str)

其中,$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);
?>

运行结果如下:

编码后的 url:http://www.cdsy.xyz/index.php?name=%E5%9F%8E%E4%B8%9C%E4%B9%A6%E9%99%A2
解码后的 url:http://www.cdsy.xyz/index.php?name=城东书院
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门