parse_ini_fileAnalyse un fichier de configuration
&reftitle.description;
arrayfalseparse_ini_filestringfilenameboolprocess_sections&false;intscanner_modeINI_SCANNER_NORMALparse_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;.
&reftitle.parameters;
filename
Le nom du fichier de configuration à analyser. Si un chemin relatif
est utilisé, il est évalué relatif au dossier courrant actuel, puis
selon le include_path.
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.
&ini.scanner.typed;
&reftitle.returnvalues;
La configuration est retournée sous la forme d'un tableau associatif
en cas de succès, et &false; si une erreur survient.
&reftitle.examples;
Contenu du fichier sample.iniExemple avec parse_ini_file
Les constantes (mais pas les
"constantes magiques" tel que __FILE__) 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 évaluées, et la valeur doit juste être la constante. Par exemple :
]]>
&example.outputs.similar;
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
)
)
]]>
parse_ini_file pour analyser un fichier php.ini
]]>
&example.outputs.similar;
Interpolation de Valeur
En plus d'évaluer les constantes, certains caractères ont une signification
particulière dans une valeur ini.
Additionnellement, les variables d'environment et options de configuration
définies précédemment (voir get_cfg_var) peuvent être
lu en utilisant la syntaxe ${}.
Échapper des Caractères
Certains caractères ont une signification particulière dans les chaînes à guillemets doubles et doivent
être échappé en les préfixant d'un antislash.
Tout d'abord, ce sont les guillemets double " comme le marqueur de frontière,
et l'antislash \ lui-même (si suivit d'un des caractères spéciaux) :
Il y a une exception pour les chemins Windows-esque : il est possible de ne pas échapper
l'antislash traînant si la chaîne cité est directement suivit d'un retour à la ligne :
Si l'on doit échapper une guillemet double suivit d'un retour à la ligne dans une
valeur multiligne, il est possible d'utiliser la concaténation de valeur de la manière
suivante (il y a une chaîne guillemet double directement suivit d'une autre) :
Un autre caractère avec une signification particulière est $ (le signe dollar).
Il doit être échappé s'il est suivit d'une accolade ouvrante :
L'échappement de caractères n'est pas supporté dans le mode INI_SCANNER_RAW
(dans ce mode tous les caractères sont traité "tel quel").
Il est à noter que l'analyseur INI ne supporte pas les séquences d'échappement standard
(\n, \t, etc.).
Si nécessaire, le résultat de parse_ini_file doit
être post-procédé avec la fonction stripcslashes.
&reftitle.notes;
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.
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 (").
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é.
Les caractères ?{}|&~!()^" ne doivent pas être utilisés
n'importe où dans la clé et ont une signification spéciale dans la valeur.
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.
Les fichiers ini sont généralement traité comme des fichiers de texte brut
par les servers web, et donc envoyé au navigateur si demandé. Ceci signifie
que pour la sécurité soit les fichiers ini doivent être stockés en dehors
de la racine docroot, soit reconfigurer le serveur web pour ne pas les servir.
L'échec de faire l'une de ces mesures peut introduire un risque de sécurité.
&reftitle.seealso;
parse_ini_string