10

所以我正在尝试编码/解码一个 url,当解码时将返回+来自 url 的编码符号。例如,我编码website.com/index.php?eq=1+12which 当编码时+变成%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;
?>
4

3 回答 3

20

不要运行urldecode,里面的数据$_REQUEST会自动为你解码。

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

于 2011-03-31T06:13:54.770 回答
13

尝试使用该功能rawurldecode() 而不是urldecode()

于 2012-11-04T12:49:23.273 回答
2

我用 JavaScript 编码它encodeURIComponent()并用 PHP 解码它,rawurldecode()它为我正确编码/解码,包括“+”,但不是urldecode()

于 2012-12-06T22:30:36.577 回答