(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.
filenameDer 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_TYPEDnicht 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.