parse_ini_file

(PHP 4, PHP 5, PHP 7)

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

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