0

我正在开发一个使用标准 CakePHP URL 模式的 CakePHP 应用程序。

如果我在控制器中使用以下功能:

class IndexController extends AppController {
    public $uses = false;
    public function test($a) {
        var_dump($a);
    }
}

并使用此 URL 调用它:

http://server/index/test/Hello+%2BTest

我得到这个结果:

string(11) "Hello++Test"

我希望第一个“+”不会转义为“”。为什么这不会发生?

4

1 回答 1

1

我认为你的意思是“unencode”而不是“unes​​cape”。

发生这种情况可能是因为 + 号是 URL 的有效字符。只有 urlencoded 字符(即 %xx)会被转换回“可读”字符。(虽然很确定这是由 Apache 完成的,而不是蛋糕)

如果你想强制转换,你可以通过 PHP 的urldecode()函数来运行它。

来自RFC 1738

因此,只有字母数字、特殊字符“$-_.+!*'()”和用于其保留目的的保留字符可以在 URL 中未编码地使用。

于 2012-04-06T19:51:14.870 回答