регулярное выражение для проверки имени файла в формате utf-8

#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.