我写了一个php站点(它还是一个原型),并在上面放了一个Digg按钮。这很容易但是..。
官方手册上说:“URL必须被编码”。我用urlencode()做到了这一点。在urlencode之后,我的URL如下所示:
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到目前为止它还不错,但是当我想把这个URL提交给Digg时,它被认为是一个无效的URL:
http://www.mysite.com/en/redirect.php?l=http://www.othersite.rs/News/World/227040/Rusia-Airplane-crashed&N=Rusia:+Airplane crashed如果我在"Airplane“和"crashed”(在链接的末尾)之间加一个"+“,那么Digg就可以毫无问题地识别它!
请帮帮忙,这个奇怪的问题正在杀死我的脑细胞!
附注:在本答案中,urls会被更改(更改为不存在的urls),因为在原始网站中,涉及非英语站点。
发布于 2011-01-01 22:39:36
在对其进行urlencode()之后,也对产生的加号进行编码:
$encoded_url = urlencode($original_url);
$final_url = str_replace('+', '%2B', $encoded_url);或者,您也可以先将URL中的空格替换为+,然后再urlencode()结果:
$spaceless_url = str_replace(' ', '+', $original_url);
$final_url = urlencode($spaceless_url);如果您自己的站点要求首先对查询字符串中的参数进行编码,那么就不会有这个问题(因为在原始URL中不会有未编码的空格)。
https://stackoverflow.com/questions/4574347
复制相似问题