php URL解码从URL中获取 '+'

标签 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;
?>

最佳答案

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

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

关于php URL解码从URL中获取 '+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495920/

相关文章:

php - 如何在WordPress发布循环中正确定位嵌入式Google广告

javascript - 获取 MySql 数据到 PHP 数组并转换为 Javascript 数组

php - 如何运行composer.json?

php - 用户上传的 PHP 文件 : Storing in database VS storing in file system

iphone - 解码 URLEncoded 非标准字符

java - Scala/Java 中的 HTTP URL 地址编码

asp.net - 为什么 HttpUtility.UrlPathEncode 标记为 "do not use"?

php - 当浏览器显然自动执行时,rawurldecode() 和 urldecode() 有什么意义?

java - Springboot : Autodecoding does not work with TestRestTemplate

php - 使用 urldecode() 导致 MySql 错误