Существует ли путь к urlencode кроме разделителей каталога / в пути?
как
urlencode('/this/is/my/file right here.jpg');
Вы можете использовать
explode
, чтобы разделить ваш путь на сегменты пути, array_map
, чтобы применить rawurlencode
для каждого элемента (не используйте urlencode
, это только для application / x-www-form-urlencoded закодированных аргументов запроса!) И схлопываются
, чтобы снова соединить сегменты. Итак, все вместе в одной строке:
$path = implode('/', array_map('rawurlencode', explode('/', $path)));
Замените их снова:
str_replace('%2F', '/', urlencode('/this/is/my/file right here.jpg'));
Обратите внимание, что если вы собираетесь передать результат в строке запроса, вам не следует выполнять замену выше - используйте только urlencode
. Если вы используете его в части пути, вам следует использовать вместо него rawurlencode .
Это должно решить вашу проблему.
str_replace("%2F","/",urlencode('/this/is/my/file right here.jpg'));
$array = explode('/', '/this/is/my/file right here.jpg');
foreach ($array as &$value) {
$value = urlencode($value);
}
print implode('/', $array);