CakePHP不会在URL中将“+”转换为“”

时间:2012-04-06 18:19:52

标签: url cakephp escaping

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

如果我在Controller中使用以下功能:

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

并使用以下网址调用它:

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

我得到了这个结果:

string(11) "Hello++Test"

我希望第一个“+”不转义为“”。为什么不这样呢?

1 个答案:

答案 0 :(得分:1)

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

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

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

来自RFC 1738

  

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