php URL解码从URL获取'+'

时间:2011-03-31 06:11:12

标签: php urlencode urldecode

所以我正在尝试编码/解码一个url,当解码时会返回来自teh url的编码+符号。例如,我对website.com/index.php?eq=1+12进行编码,在编码时将+转换为%2B,就像它应该的那样。当我从$_REQUEST['eq']检索值并使用urldecode()时,它回显为"1 12"。我似乎无法通过解码来恢复+可以这么说。我在这里做错了什么,或者是否有更有效/更好的方法来做这件事?这是我使用的确切编码/解码行。

提交页面

<?php
$eq = "1+12";
$send = '<a href="website.com/index.php?eq='.urlencode($eq).'</a>';
echo $send;

检索页面

<?php
$eq = urldecode($_REQUEST['eq']);
echo $eq;
?>

3 个答案:

答案 0 :(得分:12)

不要运行urldecode$_REQUEST中的数据会自动为您解码。

URL中的加号是编码空间。 PHP自动将十六进制值解码为+。然后,通过urldecode运行结果,您手动(并且错误地)将+解码为

答案 1 :(得分:9)

尝试使用rawurldecode()功能代替urldecode()

答案 2 :(得分:0)

我使用encodeURIComponent()在JavaScript中对其进行编码,并使用rawurldecode()在PHP中对其进行解码,并为我正确编码/解码,包括“+”,但 NOT urldecode()