Проверка INI
Проверяйте файлы конфигурации INI, например php.ini, my.cnf, записи рабочего стола или настройки инструментов, прежде чем из-за них сервис откажется запускаться. Валидатор читает каждую строку, распознает секции, пары ключей и значений, комментарии и значения в кавычках. Он сообщает о непонятных строках, незакрытых заголовках секций, пустых ключах и незакрытых кавычках. Кроме того, он отмечает повторяющиеся ключи и секции и перечисляет каждую секцию с ее ключами, чтобы вы могли сразу оценить структуру.
Часто задаваемые вопросы
Как валидатор определяет, что файл INI допустим?
Каждая непустая строка должна быть заголовком секции, например [database], ключом со значением, например host = localhost, или комментарием. Ошибкой считаются строки, не относящиеся ни к одному из этих типов, незакрытые заголовки секций, пустые ключи и незакрытые значения в кавычках. Такие ошибки делают файл недопустимым и отображаются с номерами строк.
У INI нет единого стандарта. Какие правила использует валидатор?
Валидатор следует распространенному диалекту, который используют PHP, MySQL и многие инструменты: ключи и значения разделяются знаком = или знаком :, если знака = нет; комментарии начинаются с ; или #, а ; или # после пробела в значении без кавычек начинает встроенный комментарий. Имена секций могут содержать пробелы, точки и кавычки, как в секциях в стиле Git. Типы значений не проверяются, поскольку в INI нет типов данных.
Что происходит с повторяющимися ключами?
Если ключ определен дважды в одной секции, валидатор выдает предупреждение с номером строки второго определения. Большинство парсеров INI оставляют последнее значение, поэтому предыдущее игнорируется без уведомления. Файл по-прежнему считается допустимым.
Что происходит с повторяющимися секциями?
Если заголовок секции встречается повторно, валидатор выдает предупреждение, а ключи объединяются с ключами первого вхождения. Некоторые программы обрабатывают повторяющиеся секции по-разному, поэтому обычно лучше объединить их.
Поддерживаются ли ключи-массивы, например extension[]?
Да. Значения ключей, оканчивающихся на [], собираются в список, как в файлах конфигурации PHP, и повторение таких ключей не считается дубликатом. В списке секций ключ отображается один раз.
Что такое глобальные ключи?
Ключи, расположенные перед первым заголовком секции, не относятся ни к одной секции. В результатах они отображаются как глобальные ключи. Многие инструменты используют их как значения по умолчанию или настройки верхнего уровня.
Как обрабатываются значения в кавычках?
В значениях в двойных кавычках могут содержаться ;, # и =; в них поддерживаются экранированные символы \", \\, \n и \t. Значения в одинарных кавычках воспринимаются буквально. Если значение в кавычках не закрыто в той же строке, возникает ошибка. Пробелы вокруг значений без кавычек удаляются.
Какая часть структуры отображается?
В результатах перечислены все секции с количеством ключей и их именами: до 200 секций и 50 ключей в каждой. Также указано общее количество секций и ключей. Отображается до 20 ошибок и 20 предупреждений, а для остальных приводится их количество.
Распознаются ли вложенные секции, например [a.b]?
Имена секций сохраняются точно в том виде, как они записаны. Поэтому [a.b] — это секция с именем a.b, а не подраздел a. То, считает ли программа точки обозначением вложенности, зависит от самой программы. Валидатор проверяет только, что имя не пустое, а заголовок закрыт.
Каков максимальный размер файла и можно ли преобразовать его в другой формат?
Размер входных данных может составлять до 5 MiB. Чтобы преобразовать корректный INI-файл в JSON, YAML, TOML или другой формат, используйте конвертер форматов данных, который преобразует секции в объекты.