2013-07-08 39 views
1

在其他差異中,urlencoderawurlencode對空格的編碼方式不同。 +%20。根據PHP文檔,變量會自動解碼。 PHP如何「知道」將其解碼的方式?urlencode/rawurlencode和自動解碼

我曾經使用urlencode,直到我在這裏讀到SO,原始對應物通常更好。我必須說,我從來沒有遇到任何解碼問題,但很好奇它是如何工作的,並且如果您認爲在rawurlencode由於自動解碼導致問題時有任何情況。

謝謝。

+0

http://stackoverflow.com/a/996161/1207346 – Dale

+0

個人urlencode和urldecode從未給我任何問題,我從來沒有使用rawurlencode。 – casraf

+0

'$ _GET'中的值似乎根據* both *標準自動解碼,即'%20'和'+'都是空格。實際上,這很奇怪。 – deceze

回答

2

+字符由兩個函數編碼爲%2B,所以不會造成混淆。

爲了安全解碼任何版本,PHP只需將每個%XX轉換爲其相應的字符並將每個+轉換爲空格。這是urldecode所做的。

rawurlencode不應該引起問題,因爲它所做的只是將更廣泛的字符編碼到它們的%XX副本中。這些將被任何版本的函數安全解碼。