Php urlencode除外/

Php urlencode除外/,php,urlencode,Php,Urlencode,除了路径中的目录分隔符/之外,是否有其他URL编码方法 像 再次更换: str_replace('%2F', '/', urlencode('/this/is/my/file right here.jpg')); 请注意,如果要在查询字符串中传递结果,则不应执行上述替换操作——仅使用urlencode。如果您在路径部分使用它,您应该改为使用。这将解决您的问题 str_replace("%2F","/",urlencode('/this/is/my/file right here.jpg'));

除了路径中的目录分隔符/之外,是否有其他URL编码方法

再次更换:

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

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

这将解决您的问题

str_replace("%2F","/",urlencode('/this/is/my/file right here.jpg'));
你可以用

  • 要将路径拆分为路径段
  • 应用于每个项(不要使用,这仅适用于查询参数!),以及
  • 将各部分重新组合在一起
因此,所有这些都集中在一行中:

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

这是概念上最正确的方法,尽管在实践中,
str\u replace
会更简单。对于
rawurlencode
,任一方式+1;它总是正确的,而
urlencode
有时是错误的。这个听起来也不错。这肯定比我猜的选定答案快得多。这涵盖了99%的案例。1%是2%F不打算在其中转换的路径,而是路径字符串的实际部分。@Tyblitz 2%F如果是路径字符串的一部分,则会被编码为2%25F。
$array = explode('/', '/this/is/my/file right here.jpg');
foreach ($array as &$value) {
        $value = urlencode($value);
}
print implode('/', $array);
$path = implode('/', array_map('rawurlencode', explode('/', $path)));