2015-11-06 95 views
1

所以我下面的PHP代碼:PHP GET +符號?

echo $_GET["r"]; 

這是很簡單..

但是,當我請求PHP文件是這樣的:....php?r=123+123,它吐出「123 123」,而不是帶加號的「123 + 123」。爲什麼會發生這種情況,我該如何解決?

我曾嘗試:

echo urlencode($_GET["r"]); 

其中的作品,但是,這是一個非常簡單的例子,如果我是設置爲變量:

$r = urlencode($_GET["r"]); 

變量$r將被設置到123%2B123而不是123+123,我希望變量$r設置爲真實加號,而不是%2B?

+2

URL編碼/解碼找到更多的信息? http://php.net/manual/en/function.urlencode.php – Maximus2012

+0

@ Maximus2012 sry,讓我編輯.. – super

+4

'+'編碼URL查詢字符串中的空格。但您可以[使用%2B傳輸加號](https://en.wikipedia.org/wiki/Percent-encoding),'.... php?r = 123%2B123' – VolkerK

回答

0

加號是URL中的重新分割字符。 直接調用php腳本時,它會導致空格字符。

當你需要發送一個加號時,沒有辦法繞開url編碼,就像已經在評論中建議的那樣。

0

所以,我發現它,而不是urlencode,我只是使用RAWurlencode!

0

URL php?r = 123 + 123被解碼爲「123 123」被空格分開,而不是加號。要正確解碼,請將其編碼爲php?r = 123%2B123。即使你寫了你不希望如此,請考慮這種正確的行爲。

空格字符在application/x-www-form-urlencoded鍵值對中編碼爲「+」。

RFC-1866(HTML 2.0規範)第8.2.1節。第1項說:「表單字段名稱和值被轉義:空格字符被替換爲'+',然後保留字符被轉義」)。

以下是RFC-1866允許將空格編碼爲加號的URL中的這種字符串的示例:「http://example.com/over/there?name=foo+bar」。所以在「?」之後,空格被替換爲加號。這種編碼形式數據的方式也在稍後的HTML規範中給出,例如,在HTML 4.01規範中尋找關於application/x-www-form-urlencoded的相關段落,等等。

由於對用urlencode和rawurlencode,請urlencode vs rawurlencode?