Analyse un fichier de configuration

# parse_ini_file

(PHP 4, PHP 5, PHP 7)

parse_ini_file — Analyse un fichier de configuration

### Description

parse_ini_file ( string `$filename` [, bool `$process_sections` = `FALSE` [, int `$scanner_mode` = INI_SCANNER_NORMAL ]] ) : array

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.

### Liste de paramètres

`filename`

  Le nom du fichier de configuration à analyser.

`process_sections`

  En passant le paramètre `process_sections` à `TRUE`, 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.

  À parti de 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.

### Valeurs de retour

La configuration est retournée sous la forme d'un tableau associatif en cas de succès, et `FALSE` si une erreur survient.

### Historique

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.

### Exemples

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

### Notes

> 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.

### Voir aussi

- parse_ini_string() - Analyse une chaîne de configuration