Digg按钮拒绝编码的网址

时间:2011-01-01 14:28:29

标签: php url button encode digg

我写了一个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。为了这个答案的目的,网址被改变(对于不存在的网址),因为在最初的非英语网站中涉及到。

1 个答案:

答案 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);

如果您自己的网站要求首先对查询字符串中的参数进行编码,则不会出现问题(因为原始网址中没有未编码的空格)。