Обрабатывает конфигурационный файл


(PHP 4, PHP 5)

parse_ini_fileОбрабатывает конфигурационный файл

Описание

array parse_ini_file ( string $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, то значения опций не будут обрабатываться.

Возвращаемые значения

В случае успеха настройки возвращаются в виде ассоциативного array. В случае ошибки возвращается FALSE.

Список изменений

Версия Описание
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" 

Пример #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         )  ) 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                 )          )  ) 

Пример #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". Символы ?{}|&~![()^" не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.

Замечание:

Записи без знака равенства игнорируются. Например, "foo" игнорируется, тогда как "bar =" обрабатывается и добавляется с пустым значением. Например, в MySQL есть опция "no-auto-rehash", устанавливаемая в my.cnf, которая не имеет значения и игнорируется.

Смотрите также