Друзья, столкнулся с такой проблемой. Есть ФТП на котором лежат файлы. В папках +- с тремя уровнями вложенности. Написал функцию, которая проходит рекурсивно по папкам и формирует ссылки вида download-handler.php?path="/name of folder/name of subfolder/file_name.ext" Тоесть задача передать ссылку в скрипт, который решит отдать ли этот файл на скачивание или нет, по определенным условиям. Но в именах папок есть пробелы и если делать правильно через urlencode, то получаем ссылку примерно такого вида "download-handler.php?path="%20name%20of%20folder%а20name of subfolder%20file_name.ext", что не совсем подходит при указании в дальнейшем это ссылки для скачивания где-то на другом ресурсе. Как лучше поступить? на многих ресурсах вижу пути к файлам для скачивания вида /34265/876/file_name.ext Как формируются такие ссылки? как-то через базу присваивается айди папки? Где бы почитать или посмотреть пример? Заранее спасибо за ответ.
Плохо не будет, если в ссылке передавать as is то в скрипт, который отвечает за выдачу на скачивание, передается строка до первого пробела. Если применять urlencode, то ссылка на скачивание превращается в треш с кучей разных артефактов и указывать это где-то в качестве ссылки на скачивание не хотелось бы. Ставить "_" вариант, но обратная функция преобразования, которая будет в download-handler.php заменит все "_" обратно на " ", а это не вариант, потому что "_" могут быть в именах)
Ну так это правильно, введи в яндексе или гугле строку с пробелами, и посмотри, что будет. --- Добавлено --- --- Добавлено --- Можно %20 заменить на +
Да, я так понимаю, что заменить пробел на + будет приятнее глазу. Есть функция готовая? или тупо str_replace делать и все? а получив url в download-handler c "+" делать обратную замену "+" на " " тем же str_replace?
Ну если ты %20 заменишь на плюсы после urlencode, то php потом сам заменит плюсы на пробелы. Url decode знает, что плюс это пробел. Там только не помню, как с плюсами, если несколько пробелов подряд