我写了一个php网站(它仍然是原型),我在上面放了一个Digg按钮。这很容易但是......
官方手册说:“必须对URL进行编码”。我用urlencode()做到了。在urlencode之后,我的网址如下所示:
http%3A%2F%2Fwww.mysite.com%2Fen%2Fredirect.php%3Fl%3Dhttp%3A%2F%2Fwww.othersite.rs%2FNews%2FWorld%2F227040%2FRusia-Airplane-crashed%26N%3DRusia%3A+Airplane+crashed
到目前为止一切都很好,但是当我想将该网址提交给Digg时,它被识别为无效网址:
http://www.mysite.com/en/redirect.php?l=http://www.othersite.rs/News/World/227040/Rusia-Airplane-crashed&N=Rusia:+Airplane crashed
如果我在“飞机”和“坠毁”之间放置一个“+”(在链接的末尾),那么Digg会毫无问题地识别它!
请帮助,这个奇怪的问题是杀死我的脑细胞!
P.S。为了这个答案的目的,网址被改变(对于不存在的网址),因为在最初的非英语网站中涉及到。
答案 0 :(得分:0)
在您urlencode()
之后,对结果加号进行编码:
$encoded_url = urlencode($original_url);
$final_url = str_replace('+', '%2B', $encoded_url);
或者,您可以先使用+
替换网址中的空格,然后将结果替换为urlencode()
:
$spaceless_url = str_replace(' ', '+', $original_url);
$final_url = urlencode($spaceless_url);
如果您自己的网站要求首先对查询字符串中的参数进行编码,则不会出现问题(因为原始网址中没有未编码的空格)。