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-файли поза кореневим каталогом документів, або переналаштувати веб-сервер, щоб вони не обслуговувалися. Невиконання будь-якої з цих вимог може спричинити загрозу безпеці.
Дивіться також
- parse_ini_string() - Розбирає рядок конфігурації