(PHP 4, PHP 5, PHP 7)
parse_ini_file — Parst eine Konfigurationsdatei
$filename
[, bool $process_sections
= false
[, int $scanner_mode
= INI_SCANNER_NORMAL
]] )
parse_ini_file() lädt die in
filename
angegebene Datei, und gibt
die darin enthaltenen Einstellungen in einem assoziativen
Array zurück.
Die Struktur der Ini-Datei ist identisch zur php.ini.
filename
Der Dateiname der zu ladenden ini-Datei.
process_sections
Setzt man den Parameter process_sections
auf TRUE
, erhält man ein mehrdimensionales Array mit den
Gruppennamen und Einstellungen. Der Standardwert für
process_sections
ist FALSE
scanner_mode
Kann entweder INI_SCANNER_NORMAL
(Standard) oder
INI_SCANNER_RAW
sein. Ist
INI_SCANNER_RAW
gesetzt, so werden die Werte der
Optionen nicht geparst.
Seit PHP 5.6.1 kann auch INI_SCANNER_TYPED
angegeben werden.
In diesem Modus werden soweit möglich die Typen von Boolean-, Null- oder Integer-Werten
beibehalten. Die Zeichenketten "true", "on" und
"yes" werden zu TRUE
konvertiert. "false",
"off", "no" und "none" werden
als FALSE
angesehen. "null" wird in diesem Modus zu NULL
.
Soweit möglich werden alle numerischen Zeichenketten zu Integertypen umgewandelt.
Im Erfolgsfall werden die Einstellungen als assoziatives Array
zurückgegeben, ansonsten FALSE
.
Version | Beschreibung |
---|---|
7.0.0 | Das Raute-Symbol (#) kann nicht mehr für Kommentare verwendet werden. |
5.6.1 |
Neuen Modus INI_SCANNER_TYPED hinzugefügt.
|
5.3.0 |
Der optionale Parameter scanner_mode wurde
hinzugefügt.
Einfache Anführungszeichen können nun um Variablenzuordnungen herum
verwendet werden.
Rautezeichen (# können nicht länger für Kommentare
verwendet werden und bei Verwendung wird eine Warnung zur veralteten
Benutzung ausgegeben.
|
5.2.7 |
Bei einem Syntaxfehler gibt die Funktion nun FALSE statt eines leeren
Array zurück.
|
5.2.4 | Schlüssel und Gruppennamen mit Ziffern werden nun als Integer von PHP ausgewertet, weshalb Zahlen, die mit einer 0 beginnen, als Oktalzahlen und Zahlen, die mit 0x beginnen, als Hexadezimalzahlen verstanden werden. |
5.0.0 | In doppelten Anführungszeichen eingeschlossene Werte können nun Zeilenumbrüche enthalten. |
4.2.1 | Die Funktion wird nun durch die Einstellungen Safe Mode und open_basedir beeinflusst. |
Beispiel #1 Inhalt der sample.ini
; Dies ist ein Beispiel für eine Konfigurationsdatei ; Kommentare beginnen wie in der php.ini mit ';' [erste_gruppe] eins = 1 fünf = 5 tier = VOGEL [zweite_gruppe] pfad = /usr/local/bin URL = "http://www.example.com/~username" [dritte_gruppe] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net"
Beispiel #2 parse_ini_file()-Beispiel
Konstanten in einer Ini-Datei können ebenfalls geparst werden indem man eine Konstante als INI-Wert definiert, bevor parse_ini_file() aufgerufen wird. Dieser Wert wird in die Ergebnisse integriert, dabei werden nur INI-Werte ausgewertet. Zum Beispiel:
<?php
define ('VOGEL', 'Amsel');
// Ohne Gruppen analysieren
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);
// Mit Gruppen analysieren
$ini_array = parse_ini_file("sample.ini", TRUE);
print_r($ini_array);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Array ( [eins] => 1 [fünf] => 5 [tier] => Amsel [pfad] => /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 ( [erste_gruppe] => Array ( [eins] => 1 [fünf] => 5 [tier] => Amsel ) [zweite_gruppe] => Array ( [pfad] => /usr/local/bin [URL] => http://www.example.com/~username ) [dritte_gruppe] => 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 ) ) )
Beispiel #3 parse_ini_file() parst eine php.ini
<?php
// Eine einfache Funktion, um das Ergebnis zu vergleichen
function janein($expression)
{
return($expression ? 'Ja' : 'Nein');
}
// Pfad der php.ini mittels der Funktion php_ini_loaded_file()
// holen, die seit PHP 5.2.4 verfügbar ist
$ini_path = php_ini_loaded_file();
// Parsen der php.ini
$ini = parse_ini_file($ini_path);
// Werte ausgeben und vergleichen. Beachten Sie dass die Verwendung von
// get_cfg_var() die gleichen Ergebnisse für geparste und geladene
// Werte geben wird
echo '(geparst) magic_quotes_gpc = ' . janein($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(geladen) magic_quotes_gpc = ' . janein(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
(geparst) magic_quotes_gpc = Ja (geladen) magic_quotes_gpc = Nein
Hinweis:
Diese Funktion hat nichts mit dem Laden der php.ini-Datei zu tun. Diese ist zum Ausführungszeitpunkt Ihres Skriptes bereits vollständig verarbeitet. Diese Funktion kann verwendet werden, um die Konfigurationsdateien Ihrer eigenen Anwendung zu lesen.
Hinweis:
Falls ein Wert der Ini-Datei ein nicht alphanumerisches Zeichen enthält muss dieser Wert in doppelte Anführungszeichen (") eingeschlossen werden.
Hinweis: Es gibt reservierte Schlüsselwörter, welche nicht als Schlüssel in Ini-Dateien verwendet werden dürfen. Diese umfassen: null, yes, no, true, false, on, off, none. Die Werte null, off, no und false ergeben "" und die Werte on, yes and true ergeben "1", solange der Modus
INI_SCANNER_TYPED
nicht verwendet wird (seit PHP 5.6.1). Die Zeichen ?{}|&~!()^" dürfen in einem Schlüssel nicht verwendet werden und haben im Wert besondere Bedeutung.
Hinweis:
Einträge ohne Gleichheitszeichen werden ignoriert. Beispielsweise würde "foo" ignoriert werden, während "bar =" geparst und mit einem leeren Wert hinzugefügt würde. Beispielsweise hat MySQL eine Einstellung "no-auto-rehash" in der my.cnf welche keinen Wert enthält und somit ignoriert würde.