2013-07-08 34 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副本中。这些将被任何版本的函数安全解码。