2012-06-07 106 views
4

我有空格的网址:URL编码/ HTML

http://mihalko.eu/image/data/ister/Nomad PLUS-G- cierno cervena.jpg

(浏览器可以打开此链接) 什么是最好的方式urlencode这个网址(空格=%20)?

游牧%20Plus-G-%20cierno%​​20cervena.jpg

进行urlencode:

HTTP%3A%2F%2Fmihalko.eu%2Fimage%2Fdata%2Fister%2FNomad + PLUS-G- + cierno + cervena.jpg

(浏览器无法打开此链接)
进行urlencode给我这个结果,但我的浏览器wont'tØ笔这个网址。

+4

这是URL编码,而不是HTML。 – SLaks

回答

2

使用rawurlencode

echo rawurlencode('Nomad Plus-G- cierno cervena.jpg'); 
// Nomad%20Plus-G-%20cierno%20cervena.jpg 

如果您能够接受的空间被编码为+就用urlencode代替。

+0

我编辑了我的问题,但结果与rawurlencode相同。但为什么? – Adrian

+0

@Adrian你不应该编码整个url,只需要编码单独的组件。你不想在你的url中编码所有的'/',但是如果你想在一个组件中使用'/',你可以对它进行编码。 – Paulpro

+0

不幸的是我有一些名字中有空格的目录,这个技巧是行不通的。请在下面查看我的评论。 – Adrian

0

您可以搜索最后一个“/”和使用进行urlencode您的字符串的最后一部分,这样的:

$pos=strrpos($url,"/")+1; 
$newurl=substr($url,0,$pos) . rawurlencode(substr($url,$pos)); 

如果你唯一的问题是空格,那么你可以使用

str_replace(" ","%20",$url); 
+0

谢谢,这个工程,直到我有目录名称中的空间:http://d.pr/n/uRFH+(代码与评论) – Adrian

0

str_replace('%2F','/',rawurlencode('url'));这是行得通的。