(PHP 4, PHP 5, PHP 7)
parse_ini_file — Обрабатывает конфигурационный файл
$filename
   [, bool $process_sections = false
   [, int $scanner_mode = INI_SCANNER_NORMAL
  ]] )
   parse_ini_file() загружает
   ini-файл, указанный в аргументе filename,
   и возвращает его настройки в виде ассоциативного массива.
  
Структура ini-файла похожа на структуру php.ini.
filenameИмя обрабатываемого ini-файла.
process_sections
       Установив параметр process_sections
       в TRUE, вы получаете многомерный массив, который включает
       как название отдельных настроек, так и секции. По умолчанию
       process_sections равен FALSE
      
scanner_mode
       Может принимать следующие значения: INI_SCANNER_NORMAL
       (по умолчанию) или INI_SCANNER_RAW. Если
       указано значение INI_SCANNER_RAW, то
       значения опций не будут обрабатываться.
      
С версии PHP 5.6.1 также можео задать INI_SCANNER_TYPED.
В этом режиме типы boolean, null и integer будут, по возможности, сохраняться.
Строковые значения "true", "on" и "yes"
будут преобразованы в TRUE. "false", "off", "no"
и "none" в FALSE. "null" преобразуется в NULL. 
Также, все числовые строки будут, по возможности, преобразованы к целым числам.
   В случае успеха, настройки возвращаются в виде ассоциативного массива
   (array). В случае ошибки возвращается FALSE.
  
| Версия | Описание | 
|---|---|
| 7.0.0 | Хэш-метка (#) больше не используется для комментариев. | 
| 5.6.1 | Добавлен новый режим INI_SCANNER_TYPED. | 
| 5.3.0 | Добавлен необязательный параметр scanner_mode.
        Одинарные кавычки теперь также могут быть использованы в присвоениях
        переменных. Символ решетки (#) теперь больше
        не может быть использован в качестве комментария и будет выбрасывать
        предупреждение о том, что данная возможность считается устаревшей. | 
| 5.2.7 | В случае ошибки синтаксиса, данная функция вернет FALSE,
        а не пустой массив. | 
| 5.2.4 | Ключи и имена секций, состоящие из цифр, будут обработаны в PHP как целые числа. Поэтому числа, начинающиеся с 0 будут считаться восьмеричными, а начинающиеся с 0x - шестнадцатеричными. | 
| 5.0.0 | Значения, заключенные в двойные кавычки, могут содержать переводы строк. | 
| 4.2.1 | На поведение этой функции теперь влияет безопасный режим и open_basedir. | 
Пример #1 Содержимое sample.ini
; Это пример файла настроек ; Комментарии начинаются с ';', как в php.ini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = "http://www.example.com/~username" [third_section] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net"
Пример #2 Пример использования функции parse_ini_file()
Константы также могут обрабатываться в ini-файлах, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file(), то константа будет корректно обработана. Таким образом обрабатываются только значения опций. Например:
<?php
define('BIRD', 'Dodo bird');
// Обрабатываем без секций
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);
// Обрабатываем с секциями
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
?>
Результатом выполнения данного примера будет что-то подобное:
Array
(
    [one] => 1
    [five] => 5
    [animal] => Dodo bird
    [path] => /usr/local/bin
    [URL] => http://www.example.com/~username
    [phpversion] => Array
        (
            [0] => 5.0
            [1] => 5.1
            [2] => 5.2
            [3] => 5.3
        )
    [urls] => Array
        (
            [svn] => http://svn.php.net
            [git] => http://git.php.net
        )
)
Array
(
    [first_section] => Array
        (
            [one] => 1
            [five] => 5
            [animal] => Dodo bird
        )
    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )
    [third_section] => Array
        (
            [phpversion] => Array
                (
                    [0] => 5.0
                    [1] => 5.1
                    [2] => 5.2
                    [3] => 5.3
                )
            [urls] => Array
                (
                    [svn] => http://svn.php.net
                    [git] => http://git.php.net
                )
        )
)
Пример #3 Обработка php.ini файла функцией parse_ini_file()
<?php
// Простая функция для сравнения результатов
function yesno($expression)
{
    return($expression ? 'Yes' : 'No');
}
// Получаем путь к php.ini с помощью функции php_ini_loaded_file()
// функция доступна начиная с версии PHP 5.2.4
$ini_path = php_ini_loaded_file();
// Обрабатываем php.ini
$ini = parse_ini_file($ini_path);
// Выводим и сравниваем значения, учтите, что использование get_cfg_var()
// даст одинаковые результаты для используемых здесь значений parsed (загруженное из файла) и loaded (используемое в данный момент)
echo '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
Результатом выполнения данного примера будет что-то подобное:
(parsed) magic_quotes_gpc = Yes (loaded) magic_quotes_gpc = Yes
Замечание:
Эта функция не имеет никакого отношения к файлу php.ini. К моменту выполнения вашего скрипта, он уже обработан. Эта функция может быть использована для загрузки настроек вашего собственного приложения.
Замечание:
Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").
Замечание: Существует зарезервированные слова, которые нельзя использовать в качестве ключей в ini-файлах. Такими словами являются: null, yes, no, true, false, on, off, none. Значения null, off, no и false преобразуются в "", а значения on, yes и true в "1" , но только если не используется режим
INI_SCANNER_TYPED(доступен с версии PHP 5.6.1). Символы ?{}|&~!()^" не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.
Замечание:
Записи без знака равенства игнорируются. Например, "foo" игнорируется, тогда как "bar =" обрабатывается и добавляется с пустым значением. Например, в MySQL есть опция "no-auto-rehash", устанавливаемая в my.cnf, которая не имеет значения и игнорируется.