是否可以对包含网址编码网址的网址进行urlencode?

时间:2010-03-12 14:04:24

标签: php urlencode

我有一个网站,使用facebook,twitter,美味的分享链接。它们包含您希望共享的网站的网址编码网址。问题是我想通过php重定向页面发送facebook / twitter / delicious url。

编码网址中的网址编码是否有效?会有副作用吗?

简化我的问题:

www.website.com/redirect.php?url=" URLENCODED (http://www.facbook.com/sharer.php?t='URLENCODED(title)'&u='URLENCODED(http://www.hotel.com)')

5 个答案:

答案 0 :(得分:9)

您可以使用百分比编码对字符串进行多次编码,并通过解码相同的次数来获取原始值:

$str = implode(range("\x00", "\xFF"));
var_dump($str === urldecode(urldecode(urldecode(urlencode(urlencode(urlencode($str)))))));

此处$str的值被编码三次,然后被解码三次。重复编码和解码的输出与$str的值相同。

所以试试这个:

'http://example.com/redirect.php?url='.urlencode('http://www.facbook.com/sharer.php?t='.urlencode('title').'&u='.urlencode('http://www.hotel.com'))

答案 1 :(得分:3)

您应该可以根据需要多次递归编码URL。如果你像/重复编码一个字符,你会得到:

0: /
1: %3F
2: %%3F
3: %%%%3F

答案 2 :(得分:1)

添加第二层URLEncoding是可以的。 URLEncoding的想法是防止服务器误解可能存在于文本字符串中的任何特殊字符。但是,接收脚本必须要求额外的urlencode()层,并采取相应的行动。

或者,如果您知道该字符串已被urlencoded,您不能简单地按原样传递它吗?不需要进一步的urlencoding。

答案 3 :(得分:0)

或者只是对标题和网址进行urldecode,然后对整个字符串进行urlencode。

答案 4 :(得分:0)

如前所述,您可以根据需要对网址进行编码,但是您应该知道对网址数据进行编码的次数越多,它的长度增加的可能性就会增加两倍。如果用户太长,这对用户来说会很烦人。某些浏览器的网址长度也可能有限制。 同样在服务器端,将存在开销编码和解码数据。 简而言之,您应该确保在编码/解码多次之前需要它。