(PHP 4, PHP 5, PHP 7)
parse_ini_file — Analyse un fichier de configuration
$filename
[, bool $process_sections
= false
[, int $scanner_mode
= INI_SCANNER_NORMAL
]] )
parse_ini_file() charge le fichier
filename
et retourne les
configurations qui s'y trouvent sous forme d'un tableau
associatif.
La structure des fichiers de configuration lus est similaire à celle de php.ini.
filename
Le nom du fichier de configuration à analyser.
process_sections
En passant le deuxième paramètre optionnel
à process_sections
, vous obtiendrez
un tableau multidimensionnel avec les noms des sections.
La valeur par défaut de ce paramètre est FALSE
scanner_mode
Peut être INI_SCANNER_NORMAL
(défaut) ou
INI_SCANNER_RAW
. Si INI_SCANNER_RAW
est fourni, alors les valeurs en option ne seront pas analysées.
Depuis PHP 5.6.1 peut aussi être spécifié comme INI_SCANNER_TYPED
.
Dans ce mode les booléens, null et entiers sont préservés tant que possible.
Les chaines de caractères "true", "on" et "yes"
sont converties vers TRUE
. "false", "off", "no"
et "none" sont considérés comme FALSE
. "null" est converti en NULL
dans ce mode. De plus toutes les chaines de caractères numériques sont converties en entier si possible.
La configuration est retournée sous la forme d'un tableau associatif
en cas de succès, et FALSE
si une erreur survient.
Version | Description |
---|---|
7.0.0 | Le dièse (#) n'est plus reconnu comme un commentaire. |
5.6.1 |
Ajout d'un nouveau mode INI_SCANNER_TYPED .
|
5.3.0 |
Ajout du paramètre optionnel scanner_mode .
Les guillemets simples doivent maintenant être utilisés
autour des assignements de variables. Le caractère dièse
(#) ne doit plus être utilisé comme
commentaire, et émettra une alerte si vous l'utilisez.
|
5.2.7 |
En cas d'erreur de syntaxe, la fonction retourne maintenant FALSE
au lieu d'un tableau vide.
|
5.2.4 | Les noms de section et les clés, composés de numéros, sont maintenant évalués comme des entiers, ceux commençant par un 0 seront évalués comme des octales, et ceux commençant par 0x, comme des hexadécimaux. |
5.0.0 | Les valeurs entourées par des guillemets, peuvent contenir des nouvelles lignes. |
4.2.1 | Cette fonction est maintenant affectée par le safe mode et l'open_basedir. |
Exemple #1 Contenu du fichier sample.ini
; Ceci est un fichier de configuration ; Les commentaires commencent par ';', comme dans 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"
Exemple #2 Exemple avec parse_ini_file()
Les constantes peuvent aussi être utilisées dans le fichier .ini, ce qui fait que si vous définissez une constante avant d'exécuter parse_ini_file(), elle sera intégrée dans les résultats. Seules les valeurs de configuration sont remplacées par leur équivalent en constantes. Par exemple :
<?php
define('BIRD', 'Dodo bird');
// Analyse sans sections
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);
// Analyse avec sections
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
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 ) )
Exemple #3 parse_ini_file() pour analyser un fichier php.ini
<?php
// Une fonction simple pour comparer les résultats ci-dessous
function yesno($expression)
{
return($expression ? 'Yes' : 'No');
}
// Lit le chemin du php.ini en utilisant php_ini_loaded_file()
// cette fonction est disponible depuis PHP 5.2.4
$ini_path = php_ini_loaded_file();
// Analyse de php.ini
$ini = parse_ini_file($ini_path);
// Affichage et comparatif des valeurs. Notez que get_cfg_var()
// va donner les mêmes résultats entre les résultats analysés et chargés
echo '(analysé) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(chargé ) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
(analysé) magic_quotes_gpc = Yes (chargé ) magic_quotes_gpc = Yes
Note:
Cette fonction n'a rien a voir avec le fichier php.ini. Ce dernier a déjà été traité lorsque vous commencez à exécuter votre script. Cette fonction peut vous permettre de lire vos propres fichiers de configuration.
Note:
Si une valeur du fichier ini contient des données non-alphanumériques, il faut la protéger en la plaçant entre guillemets doubles (").
Note: Il existe des mots réservés qui ne doivent pas être utilisés en tant que clés dans les fichiers ini. Cela inclut : null, yes, no, true, false, on et off. Les valeurs null, off, no et false donnent "" (chaîne vide). Les valeurs on, yes et true donnent "1", à moins que le mode
INI_SCANNER_TYPED
ne soit utilisé (à partir de PHP 5.6.1). Les caractères ?{}|&~!()^" ne doivent pas être utilisés n'importe où dans la clé et ont une signification spéciale dans la valeur.
Note:
Les entrées sans un signal égal seront ignorées. Par exemple, "foo" sera ignoré alors que "bar =" sera analysé et ajouté avec une valeur vide. Par exemple, MySQL a une option de configuration "no-auto-rehash" dans le fichier my.cnf qui ne prend pas de valeur, aussi, elle sera ignorée.