У меня проблемы с загрузкой имен файлов пользователями, которые я должен обработать. Когда я пытаюсь получить к ним доступ, поскольку некоторые из них имеют специальные символы, используемая команда говорит, что файл не найден или что-то подобное.
Я использовал escapeshellcmd без успеха.
Когда я использую клавишу «tab» в консоли Linux (когда вы начали вводить имя файла и хотите, чтобы оно завершилось), bash правильно экранирует имя файла, и если я использую именно это «экранированное» имя файла, это работает.
Я пробовал это:
preg_replace("/[^a-zA-Z0-9\-\.\s]/", "\\\\$0", $filename)
экранировать все, кроме цифр, букв, - и пробелов... но я обнаружил, что для файла "test_1.jpg" эта команда преобразует его в "test_1.jpg", и это не работает, так как "_" НЕ нужно быть преобразованным.
Я боюсь, что может быть больше «разрешенных» символов, поэтому мой вопрос: как я могу «клонировать» функцию escape клавиши «tab» в консоли Linux bash?
Спасибо !