2010-05-14 44 views
9

除了目錄分隔符/路徑之外,是否有urlencode的方法?urlencode除了/

urlencode('/this/is/my/file right here.jpg'); 

回答

27

您可以使用

所以都聚集在一個行:

$path = implode('/', array_map('rawurlencode', explode('/', $path))); 
+0

這將是最合理的做法,但實際上'str_replace'會更簡單。無論哪種方式+1'rawurlencode';它總是正確的,而'urlencode'有時是錯誤的。 – bobince 2010-05-14 14:05:35

14

再次替換它們:

str_replace('%2F', '/', urlencode('/this/is/my/file right here.jpg')); 

請注意,如果你要通過結果的查詢字符串,你不應該做上面的更換 - 只使用urlencode 。如果你在路徑部分使用它,你應該使用rawurlencode來代替。

+0

這一個聽起來不錯了。它必須比我猜測的選定答案快得多。 – 2015-01-11 20:27:37

+0

這涵蓋了99%的病例。 1%是其中2%F不是要轉換的路徑,而是路徑字符串的實際部分。 – Tyblitz 2015-04-27 20:36:37

+0

@Tyblitz如果它是路徑字符串的一部分,則2%F將被編碼爲2%25F。 – Phil 2016-10-03 08:23:43

2

這應該解決您的問題。

str_replace("%2F","/",urlencode('/this/is/my/file right here.jpg')); 
2
$array = explode('/', '/this/is/my/file right here.jpg'); 
foreach ($array as &$value) { 
     $value = urlencode($value); 
} 
print implode('/', $array);