我正在开发一个使用标准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"
我希望第一个“+”不转义为“”。为什么不这样呢?
答案 0 :(得分:1)
我认为你的意思是“unncode”而不是“unescape”。
这可能是因为+符号是URL的有效字符。只有urlencoded字符(即%xx)将被转换回“可读”字符。 (虽然很确定这是由Apache完成的,而不是蛋糕)
如果您想强制转换,可以通过PHP的urldecode()函数运行它。
来自RFC 1738:
因此,只有字母数字,特殊字符“$ -_。+!*'(),”和用于保留目的的保留字符可以在URL中以未编码的方式使用。