2012-04-06 42 views
0

我正在開發使用標準CakePHP URL架構的CakePHP應用程序。CakePHP不會在URL中忽略「+」到「」

如果我使用下面的函數在一個控制器:

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" 

我期望第一個「+」被轉義爲「」。爲什麼不發生這種情況?

回答

1

我認爲你的意思是「unncode」而不是「unes​​cape」。

發生這種情況可能是因爲+符號是URL的有效字符。只有urlencoded字符(即%xx)將被轉換回「可讀」字符。 (雖然很確定這是由Apache完成的,而不是蛋糕)

如果你想強制轉換,你可以運行它的PHP的urldecode()函數。

RFC 1738

因此,只有字母數字,特殊字符 「!$ -_ + *」()「,和用於各自保留目的的保留字符可以在URL中使用未編碼。

+0

感謝您的回答。正如你所說的,+符號是URL中的一個有效字符,所以錯誤發生在錯誤地編碼空間的客戶端。 (我不能使用'urldecode()',因爲這會將兩個加號解碼爲空格) – flo 2012-04-06 21:57:12