所以我试图编码/解码一个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;
?>
不要运行urldecode
,$_REQUEST
中的数据会自动为您解码。
URL中的加号是编码空间。 PHP自动将十六进制值解码为+
。然后,通过urldecode
运行结果,您手动(并且错误地)将+
解码为。
尝试使用函数rawurldecode()
而不是urldecode()
我使用encodeURIComponent()
在JavaScript中对其进行编码,并使用rawurldecode()
在PHP中对其进行解码,并为我正确编码/解码,包括“+”,但不包含urldecode()