php URL解码从URL获取'+'

问题描述 投票:7回答:3

所以我试图编码/解码一个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;
?>
php urlencode urldecode
3个回答
12
投票

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

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


9
投票

尝试使用函数rawurldecode()而不是urldecode()


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.