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