Joomla имя файла должно содержать только буквенно цифровые символы и не содержать пробелов

Обновлено: 05.07.2024

Я пишу процедуру ввода-вывода с именем файла на ассемблере x86-16. Он берет восемь символов (мне не нужно поддерживать длинные имена файлов) с клавиатуры и печатает их в поле ввода текста на экране.

На данный момент я допускаю цифры, прописные / строчные буквы, подчеркивания и дефисы.

Я хотел бы разрешить все юридические символы, но я не могу найти официальный список запрещенных символов. Здравый смысл подсказывает мне, что косые черты незаконны, но если бы мне пришлось угадывать, я бы сказал, что символ «плюс» является законным. (редактировать: это не так!)

Я уже игнорирую символ точки, так как мой код автоматически обрабатывает добавление точки и расширения файла.

Вы также можете найти [retrocomputing.se] полезным. Bob 3 года назад 17 Попробуйте создать папку в Windows и поставить '?' во имя. Подсказка говорит вам, какие символы запрещены. Это дает вам начало :) Mixxiphoid 3 года назад 0 @phuclv, поэтому я сказал: «Это дает вам начало», а также почему это комментарий, а не ответ. Mixxiphoid 3 года назад 1 Почему все символы MS-DOS? Почему бы также не рассмотреть другие старые правила ОС? jpmc26 3 года назад 0

4 ответа на вопрос

Краткое резюме можно найти в Википедии :

  • " * +, / : ; < = > ? \ [ ] | [9]
  • Windows / MS-DOS не имеет escape-символа оболочки
  • . (U + 002E. Полная остановка) в полях имени и расширения, кроме как в. и .. записи (см. ниже)
  • Строчные буквы a - z (сохраняются как A – Z на FAT12 / FAT16)
  • Управляющие символы 0–31
  • Значение 127 (DEL) [сомнительно - обсудить]

И вот что официально сказано в руководстве пользователя MS-DOS 6

Именование файлов и каталогов

  • Может быть длиной до восьми символов. Кроме того, вы можете включить расширение длиной до трех символов.
  • Не чувствительны к регистру. Не имеет значения, используете ли вы прописные или строчные буквы при их наборе.
  • Может содержать только буквы от A до Z, цифры от 0 до 9 и следующие специальные символы: underscore ( _ ), caret ( ^ ), знак доллара ( $ ), tilde (
  • Он может содержать не более восьми символов.
  • Он может состоять из букв от A до Z, цифр от 0 до 9 и следующих специальных символов:

  • Имя не может содержать пробелы, запятые, обратную косую черту или точки (кроме периода, отделяющего имя от расширения).
  • Имя не может быть одним из следующих зарезервированных имен файлов: CLOCK $, CON, AUX, COM1, COM2, COM3, COM4, ​​LPT1, LPT2, LPT3, LPT4, NUL и PRN.
  • Это не может быть тем же именем, что и другой файл в каталоге.

Первый байт имени не должен быть 0x20 (пробел). Короткие имена или расширения дополняются пробелами. Специальные символы ASCII 0x22 ( " ), 0x2a ( * ), 0x2b ( + ), 0x2c ( , ), 0x2e ( . ), 0x2f ( / ), 0x3a ( : ), 0x3b ( ; ), 0x3c ( < ), 0x3d ( = ), 0x3e ( > ), 0x3f ( ? ) 0x5b ( [ ), 0x5c ( \ ), 0x5d ( ] ), 0x7c ( | ) не допускаются.

При подборе названий для файлов используйте только латинские буквы, цифры, символы «-» и «_».

Из-за того, что для русского языка существует множество различных кодировок, многие программы могут некорректно работать с файлами, имеющими кириллические символы в названии. При использовании русских символов в названии могут возникнуть такие проблемы:

  1. Файл корректно отображается при просмотре через FTP-клиент, но не открывается на сайте;
  2. Имя файла может «побиться» (стать нечитабельным) при загрузке с локального компьютера на сервер или при копировании файла с сервера на сервер;
  3. Файл некорректно индексируется поисковыми системами;
  4. Файл не открывается на компьютере пользователя и т.д.

2. Только строчные буквы

Используйте только строчные буквы для названий файлов. В Windows название «Новый Документ.docx» значит то же самое, что и «новый документ.docx», но это относится не ко всем операционным системам. Например, некоторые Unix-системы проявляют чувствительность к регистру.

3. Не используйте пробел

Если название файла состоит больше, чем из одного слова, никогда не используйте пробел для отделения слов. Используйте в качестве разделителя символ «-» или «_».

Иконка формата JPG

Хорошо icon-skype.jpg Плохо image 1.jpg

4. Осмысленные названия на английском языке

Указывайте для файлов осмысленные названия на английском языке, избегайте названий «по умолчанию» (Новая папка 2) и использования транслита.

Когда пользователь собирается перейти по ссылке, он нередко обращает внимание на её адрес. Если имя страницы или файла описывает содержимое, пользователь охотнее перейдёт по ссылке.

Поисковые системы также учитывают название файла. Ссылка на ваш сайт, содержащая в названии ключевое слово, даёт поисковым системам понять, о чем ваша страница.

Я уже прошел через некоторый вопрос в StackOverflow относительно этого, но ничего не помогло в моем случае.

Я хочу ограничить пользователя, чтобы предоставить имя файла, которое должно содержать только буквенно-цифровые символы, - , _ , . и пространство.

Я не хорош в регулярных выражениях, и до сих пор я придумал это ^[a-zA-Z0-9.-_]$ . Кто-нибудь может мне помочь?

это правильное выражение:

\w эквивалентно [0-9a-zA-Z_] .

в то время как то, что спрашивает OP, близко к тому, что использует принятый в настоящее время ответ ( ^[\w\-. ]+$ ), могут быть другие, видящие этот вопрос, у которых есть еще более конкретные ограничения.

во-первых, работает на машине без US/GB, \w позволит широкий спектр нежелательных символов из иностранных языков, в соответствии с ограничениями OP.

во-вторых, если расширение файла включено в имя, это позволяет всевозможные странные выглядящие, хотя и действительные, имена файлов как file .txt или file. txt .

в-третьих, если вы просто загружаете файлы в свою файловую систему, вам может понадобиться черный список файлов и / или расширений, подобных этим:

однако это значительно выходит за рамки этого вопроса; это потребует всевозможной информации о настройке для хорошего руководства по вопросам безопасности. Я думал, что должен поднять этот вопрос. меньше.

поэтому для решения проблемы, где пользователь может ввести полное имя файла, я бы выбрал что-то вроде этого:

он гарантирует, что используется только английский алфавит, никаких начальных или конечных пробелов и обеспечивает использование расширения файла с длиной не менее 1 и без пробелов.

Я проверил это на Regex101, но на будущее, это был мой "тест-люкс":

если кому-то еще нужно проверить имена файлов (включая зарезервированные слова Windows и т. д.), Вот полное выражение: \A(?!(?:COM4|CON|LPT3|NUL|PRN|AUX|com2|con|lpt2|nul|prn|aux)|[\s\.])[^\\/:*"?<>|]\z

использовать это регулярное выражение ^[a-zA-Z0-9._ -]+$

Это незначительное изменение в ответе инженеров.

Это блок ".txt" что недопустимо.

проблема в том, что делает блок "..txt" действительный

Я только что создал это. Это предотвращает две точки и точки в конце и начале. Однако это не позволяет никаких двух точек.

возможно, я говорю здесь что-то глупое, но мне кажется, что эти ответы неверны. Во-первых, мы говорим о Linux или Windoze здесь (или другой ОС)?

во-вторых, в Windows (я считаю) совершенно законно включать "$" в имя файла, не говоря уже о Unicode в целом. Это, конечно, кажется возможным.

Я попытался получить окончательный источник об этом. и в конечном итоге в страница имени файла Wikip: в частности раздел "зарезервировано символы и слова" кажется уместным: и это, очевидно, список вещей, которые вам не разрешено вставлять.

часть страницы имени файла Wikip, на которую ссылается выше, показывает, что этот вопрос зависит от используемой вами ОС. но должно быть возможно состряпать какое-то простое регулярное выражение для Linux и Windoze по крайней мере.

затем я нашел способ Java (по крайней мере):

java.НИО.файл.InvalidPathException: незаконный символ в индексе 4: bobb. мышь.blip

. предположительно, разное FileSystem объекты будут иметь разные правила проверки

скопировано из @Engineer для дальнейшего использования, поскольку точка не была экранирована (как и должно быть) в наиболее проголосовавшем ответе.

Я создаю форму профиля с помощью gii и после выполнения части gii, и когда я открываю страницу для создания формы и нажимаю на "Creating Profile", она появляется с этой ошибкой:

Недопустимый Параметр-yii\base\InvalidParamException
Имя атрибута должно содержать только символы слова.

а это фотография связанной таблицы в БД. phpmyadmin посмотреть в таблице

если вам понадобится дополнительная информация, просто дайте мне знать.

2 ответа

У меня есть файл /FavoriteTwitterSearches/res/menu/FavoriteTwitterSearches.xml в моем проекте android. Когда я хочу запустить проект - я получаю ошибку res\menu\FavoriteTwitterSearches.xml: недопустимое имя файла: должно содержать только [a-z0-9_.] . Но если я изменю имя файла на a-z,0-9, то в.

В вашем столе у вас есть

- не допускается в соглашении об именовании полей yii2

например, ваше имя столбца - заглавная буква Image_name(I) , вы можете принять такую ошибку. Вы должны изменить со строчной буквы(i) , например: имя_образа

Похожие вопросы:

Может ли имя пакета приложения android содержать неанглийские символы? например, может ли это быть com.android.नमस्ेे Перед этим я поставил eclipse использовать UTF-8.

Мне нужно найти все слова, которые имеют определенные символы (буквы, цифры и специальные символы), и игнорировать rest. Вот мое выражение : /[cwh]\w+/ig Пример : Матч: смотрите , потому что c , w .

Я разрабатываю веб-приложение для школы, и у меня есть такие вещи, как class_name и course_name. Имя курса является родителем имени класса, следовательно, имя класса должно содержать имя курса.

У меня есть файл /FavoriteTwitterSearches/res/menu/FavoriteTwitterSearches.xml в моем проекте android. Когда я хочу запустить проект - я получаю ошибку res\menu\FavoriteTwitterSearches.xml.

Мой файл содержит UTF-8 (греческих) символов, и я не могу его загрузить. Я использую laravel 4. Вот мой код: //download Route::get('file/download', function() < $file = 'uploads/πτυχιακή.odt';.

Я использую PMD для проверки нарушения кодирования java. Я пишу тестовые случаи автоматизации и даю такое имя метода: public void testCaseMethod_4_2_16() < //some implementation >где 4_2_16-номер.

У меня есть очень специфический формат имени пользователя, и я, кажется, не могу выполнить его через regex Вот мой образец: \w([ ])\w Специфика этого формата заключается в следующем: Имя.

Обычно я называю свой файл в camelCase (например, tabActive )., но это не разрешено в Android. Есть ли причина, по которой имя файла android xml должно содержать только строчные буквы и цифры.

/.virtualenvs/test/mysite python$ manage.py datamigration тест1 --начальная Имена миграции должны содержать только буквенно-цифровые символы и.

У меня есть файл, и мне требуется некоторая проверка Regex на нем. Проверка заключается в том, что имя файла должно содержать только ASCII 32-126 символ, за исключением: –34 [] –39 [’] –59 [;] –60.

Читайте также: