#php #regex #filenames
#php #регулярное выражение #имена файлов
Вопрос:
Я пару часов гуглил, но не смог найти хорошего решения для проверки имени файла в формате utf-8 в PHP regex solution. Я перепробовал многие из них, при необходимости я могу скопировать / вставить сюда. Имя файла может содержать немецкие или другие символы, но не недопустимые, такие как / и т.д. У тебя есть какие-нибудь идеи?
Ответ №1:
Ответ №2:
Одна альтернатива, которую я всегда находил очень элегантной, — это urlencode()
изменение имен файлов.
Это устраняет необходимость вносить символы в черный список, поскольку создает имена файлов, которые работают в любой файловой системе; отображение реального имени файла является тривиальным использованием urldecode()
.
Ответ №3:
Попробуйте исключить недопустимые? ^[^/etc] $
или что-то подобное (замените etc другими символами, которые вам не нравятся).
Не уверен, действительно ли вам нужно регулярное выражение для этой задачи.
Ответ №4:
Я не уверен, пытаетесь ли вы проверить, является ли файл UTF-8, или как создать регулярное выражение в формате UTF-8. Если вы хотите выполнить регулярное выражение в формате UTF-8, вы можете использовать mbstring
ряд функций, сначала установив для mb_regex_encoding значение UTF-8, затем используя mb_ereg для сопоставления с регулярным выражением. Если вы хотите проверить, имеет ли файл UTF-8, вы можете использовать mb_detect_encoding для содержимого файла и посмотреть, соответствует ли оно UTF-8.