php URL解码从URL得到'+'
问题描述:
所以我想编码/解码一个url,解码时会返回编码的+
符号从teh url。例如,我编码website.com/index.php?eq=1+12
,在编码时将+
转换为%2B
,因为它应该如此。当我检索$_REQUEST['eq']
的值并使用urldecode()
时,它的回显为"1 12"
。可以这么说,我似乎无法获得解码来恢复+
。我在这里做错了什么,或者有没有更好的方式去做这件事?这里是我使用的确切的编码/解码线。php URL解码从URL得到'+'
提交页面
<?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
,手动(并错误地)将+
解码为。
答
尝试使用,而不是urldecode()
答
功能rawurldecode()
我编码它在JavaScript与encodeURIComponent()
并在PHP与rawurldecode()
解码和它编码/正常解码对我来说,包括“+”,但不与urldecode()
所以我删除了urldecode,并保存urlencode。它仍然将$ _REQUEST注册为空间。 – 2011-03-31 06:19:28
它不会在我复制/粘贴该代码并删除'urldecode'语句。 – Quentin 2011-03-31 06:21:46
我不确定,也许PHP版本不同,功能不同?或者可能是我的网页的其他部分发生冲突。我想通过使用str_replace(“”,“+”,$ eq)来解决这个问题。可能不理想,但因为我的URL永远不会需要空间,似乎工作。感谢您的帮助。 – 2011-03-31 06:25:39