PHP - GET url 编码 @、\ 和 & 符号

PHP - GET url encode @, \ and & sign

这个PHP代码:

$test = '@&\';
echo rawurlencode($test);

结果:

http://example.com/test=%40%26%5C

在 url 中的 $_GET 请求变成这样:

test=@&\

以上是不允许的 $_GET 变量。

我如何仍然使用带有这些值的 $_GET 变量,对它们进行编码并解码回来以获取这些值?

如果您将 URL 创建为 http://example.com/test=%40%26%5C,那么 URL 肯定会是 http://example.com/test=%40%26%5C。当 PHP 收到此 URL 的请求时,PHP 自动解码 查询字符串并将其放入 $_GETURL 没有改变,您只需将查询字符串的 解码值 提供给您的 PHP 脚本在 $_GET 变量中。

此外,浏览器 可能 决定在 usability/readability 的地址栏中以解码形式显示 URL。这并不意味着 实际 URL 包含 @&\ 个字符。