php中urldecode()和urlencode()起啥作用啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中urldecode()和urlencode()起啥作用啊相关的知识,希望对你有一定的参考价值。

下面这段代码中用到了,但是不知道是什么作用,在表单数据的接收时感觉没用也没错啊
if (isset($_POST['keyWord']) && trim($_POST['keyWord']!=''))

$keyWord = $_POST['keyWord'];

else

$keyWord = urldecode(str_replace('@', '%', $_GET['keyWord']));

$arrayKeyWord = explode(' ', $keyWord);
$smarty->assign('key', str_replace('%', '@', urlencode($keyWord)));

urlencode()编码:对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
urldecode()解码:还原 URL 编码字符串。
示例:
<?php
header("Content-Type:text/html; charset=utf-8");
//对参数值进行编码
$parm=urlencode("演示php-mysql");

//拼接url
$url="decode.php?par=".$parm;
?>

<a href="<?php echo $url;?>">urlencode演示</a>

点击连接后地址栏中汉字被编码了:
http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql
------------------------------------------------------------------------

//decode.php
<?php
//获取参数值
$parValue=$_GET[\'par\'];

//解码
echo urldecode($parValue);
//运行结果:演示php-mysql
?>追问

你能给我说一下我写的那段代码的意思吗
如果是通过表单提交的数据时都经过urlencode()和urldecode()这个过程吗

追答

演示代码贴出来了,你仔细看下!!

追问

你知道我贴出的代码的意思吗,求解释

追答

如果你传过来的参数值里边没有汉字或其他字符或符号,用urldecode和不用urldecode的结果是一样的。如果参数值有中文汉字,可以使用urlencode进行编码,实际上就是中文字符的一种编码转化方式。使用了这个方式,肯定就得解码(urldecode)

$keyWord = urldecode(str_replace(\'@\', \'%\', $_GET[\'keywords\']));
//这句代码的意思:首先替换keywords参数值里边的@符号替换为:%,然后进行解码操作。

追问

我就是想做一个图书搜索的功能,先建了一个图书的数据库,然后就用select语句查找数据库中与通过表单提交的关键字相同的图书信息,我没用加密和解密也能搜索出来,但是网上找到了这个,发现里头这个东西看不懂,还有,你知道想淘宝、京东等这些网站的搜索功能是怎么做的吗,我怎么感觉我这种搜索方法好像不是很正规
还有就是上面这段代码怎么先就是decode,是不是程序默认就是将keyword进行过encode了

追答

百度和其他搜索引擎等有些也用这个机制。其实这样做的目的只有一个:防止中文乱码,再没别的用途。多数情况下,有些浏览器会自动编码,解码。其实不用这两个函数也没影响。

参考技术A urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。

urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符
参考技术B url 加密 与 解密 。 其实就是对url中字符串进行编码。 比如你的字符串是这样“ DSA啊撒旦撒答撒旦撒DSADSADSA ” ,encode之后就是这样的 “ DSA%e5%95%8a%e6%92%92%e6%97%a6%e6%92%92%e7%ad%94%e6%92%92%e6%97%a6%e6%92%92DSADSADSA ” 。追问

我就是想通过表单方式提交数据,这其中会用到这个加密和解密吗,还有就是你能给我解释下代码实现了什么功能

追答

不明白为什么你的keyword 到底是要post 还是 get 过来、

追问

就是看不明白,这是我在网上找的一个程序中的一部分,但是看不太明白

以上是关于php中urldecode()和urlencode()起啥作用啊的主要内容,如果未能解决你的问题,请参考以下文章

php中urldecode()和urlencode()和stripslashes() 的作用

python中Url链接编码处理(urlencode,urldecode)

php 浏览器URL加密函数urlencode 和rawurlencode函数

php 怎样判断一段字符 有没有经过 urlencode 处理

Python3中的urlencode和urldecode

URLEncode编码和URLDecode解码