urlencode除了斜杠之外

12

是否有一种方法可以urlencode除路径中的目录分隔符/之外的内容?

例如:

urlencode('/this/is/my/file right here.jpg');
4个回答

34

1
这将是最概念上正确的方法,但在实践中,str_replace 更简单。无论哪种方式,都要加1个赞给 rawurlencode;它总是正确的选择,而 urlencode 有时会出错。 - bobince

16

再次替换它们:

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

请注意,如果您要将结果作为查询字符串传递,则不应执行上面的替换操作 - 仅使用urlencode。如果在路径部分中使用它,则应改用rawurlencode


这个听起来也不错。我猜它一定比被选中的答案快得多。 - Mangirdas Skripka
这涵盖了99%的情况。只有1%的情况是2%F不是要被转换而是路径字符串的实际一部分。 - webketje
1
如果@Tyblitz 2%F是路径字符串的一部分,它将被编码为2%25F。 - Phil

3
这应该可以解决您的问题。
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接