parse_ini_file

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_ini_file — Обробляє файл конфігурації

Опис

parse_ini_file(string $filename, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false

parse_ini_file() завантажує ini-файл, вказаний у аргументі filename, і повертає його налаштування у вигляді асоціативного масиву.

Структура ini-файлу схожа структуру php.ini.

Список параметрів

filename

Ім'я ini-файлу, що обробляється. Якщо використовується відносний шлях, він оцінюється щодо поточного робочого каталогу, а потім include_path

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

Приклади

Приклад #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()****

Константи (але не "магічні константи" на кшталт __FILE__) також можуть оброблятися в ini-файлах, тому якщо ви оголосите константу у вигляді значення для ini-файла до виклику parse_ini_file(), то константа буде коректно опрацьована. Тільки значення опцій будуть оброблятись і значення має бути просто константою. Наприклад:

Loading...

Висновок наведеного прикладу буде схожим на:

Array
(
    [one] => 1
    [five] => 5
    [animal] => Птица додо
    [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] => Птица додо
        )

    [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()

Loading...

Висновок наведеного прикладу буде схожим на:

(parsed) magic_quotes_gpc = Да
(loaded) magic_quotes_gpc = Да

Приклад #4 Інтерполяція значень

Крім оцінки констант, деякі символи мають особливе значення у значенні ini-файлів. Крім того, змінні середовища та раніше визначені параметри конфігурації (див. get_cfg_var()) можуть бути прочитані з використанням синтаксису ${}

; | используется для побитового ИЛИ
three = 2|3

; & используется для побитового AND
four = 6&5

; ^ используется для побитового XOR
five = 3^6

; ~ используется для побитового отрицания
negative_two = ~1

; () используется для группировки
seven = (8|7)&(6|5)

; Интерполируйте переменную окружения PATH
path = ${PATH}

; Интерполируйте параметр конфигурации 'memory_limit'
configured_memory_limit = ${memory_limit}

Приклад #5 Екранування символів

Деякі символи мають особливе значення у рядках з подвійними лапками і мають бути екрановані префіксом зворотної косої межі. Насамперед, це подвійна лапка " як маркер кордону і сама зворотна коса риса \ (якщо за нею слідує один із спеціальних символів):

quoted = "Она сказала \"Именно моя точка зрения\"." ; Результатом является строка с кавычками.
hint = "Используйте \\\", чтобы избежать двойных кавычек" ; Результат: Используйте \", чтобы избежать двойных кавычек

Для шляхів, подібних до Windows, зроблено виняток: можна не екранувати зворотну косу межу в кінці, якщо за рядком у лапках слідує розрив рядка:

save_path = "C:\Temp\"

Якщо потрібно екранувати подвійні лапки, за якими слід перенесення рядка в багаторядковому значенні, можна використовувати конкатенацію значень наступним чином (за одним рядком у подвійних лапках безпосередньо слідує інша):

long_text = "Lorem \"ipsum\"""
 dolor" ; Результат: Lorem "ipsum"\n dolor

Інший символ зі спеціальним значенням – це $ (Знак долара). Він повинен бути екранований, якщо за ним слідує відкрита фігурна дужка:

code = "\${test}"

Екрануючі символи не підтримуються в режимі INI_SCANNER_RAW (у цьому режимі всі символи обробляються "як є").

Зверніть увагу, що синтаксичний аналізатор ini не підтримує стандартні послідовності екранування (\n \t і т.д.). За потреби виконайте постобробку результату parse_ini_file() за допомогою функції stripcslashes()

Примітки

Зауваження :

Ця функція не має жодного відношення до файлу php.ini. На момент виконання вашого скрипта, він вже оброблений. Ця функція може бути використана для завантаження налаштувань вашої власної програми.

Зауваження :

Якщо значення ini-файлу містить інші символи, окрім літер і цифр, воно повинне полягати в подвійних лапках (").

Зауваження: Існує зарезервовані слова, які не можна використовувати як ключі в ini-файлах. Такими словами є: null yes no true false on off noneЗначенияnull off noиfalseпреобразуются в"", а значенияon yesиtrueв"1" , але тільки якщо не використовується режим INI_SCANNER_TYPED. Символи ?{}|&~!()^" не повинні використовуватися в ключах і мати будь-який особливий зміст у значеннях.

Зауваження :

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

Зауваження :

ini-файли зазвичай обробляються веб-серверами як простий текст і, таким чином, на запит передаються браузерам. Це означає, що з метою безпеки ви повинні або зберігати свої ini-файли поза кореневим каталогом документів, або переналаштувати веб-сервер, щоб вони не обслуговувалися. Невиконання будь-якої з цих вимог може спричинити загрозу безпеці.

Дивіться також