parse_ini_fileParst eine Konfigurationsdatei
&reftitle.description;
arrayfalseparse_ini_filestringfilenameboolprocess_sections&false;intscanner_modeINI_SCANNER_NORMALparse_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;.
&reftitle.parameters;
filename
Der Dateiname der zu parsenden ini-Datei. Wenn ein relativer Pfad
verwendet wird, wird er relativ zum aktuellen Arbeitsverzeichnis
ausgewertet und dann entsprechend dem
include_path.
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.
&ini.scanner.typed;
&reftitle.returnvalues;
Im Erfolgsfall werden die Einstellungen als assoziatives Array
zurückgegeben, ansonsten &false;.
&reftitle.examples;
Inhalt der sample.iniparse_ini_file-Beispiel
Abgesehen von "magischen Konstanten" wie __FILE__
können auch Konstanten in einer
Ini-Datei geparst werden, indem man einen INI-Wert als Konstante
definiert, bevor parse_ini_file aufgerufen wird.
Diese Konstante wird in die Ergebnisse integriert. Dabei werden nur
INI-Werte ausgewertet und der Wert muss genau die Konstante sein. Zum
Beispiel:
]]>
&example.outputs.similar;
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
)
)
)
]]>
parse_ini_file parst eine php.ini
]]>
&example.outputs.similar;
Wert-Interpolation
Neben der Auswertung von Konstanten haben bestimmte Zeichen eine
besondere Bedeutung in einem ini-Wert. Darüber hinaus können
Umgebungsvariablen und zuvor definierte Konfigurationsoptionen (siehe
get_cfg_var) mit der ${}-Syntax gelesen
werden.
Zeichen maskieren
Einige Zeichen haben in Zeichenketten in doppelten Anführungszeichen eine
besondere Bedeutung und müssen durch das Backslash-Präfix maskiert
werden. Dies sind vor allem das doppelte Anführungszeichen "
als Begrenzungszeichen und der Backslash \ selbst (wenn
darauf ein Sonderzeichen folgt):
Es gibt eine Ausnahme für Windows-ähnliche Pfade: Es ist möglich, den
abschließenden Backslash nicht zu maskieren, wenn auf die Zeichenkette in
Anführungsstrichen direkt ein Zeilenumbruch folgt:
Wenn man doppelte Anführungszeichen gefolgt von einem Zeilenumbruch in
einem mehrzeiligen Wert vermeiden muss, ist es möglich, die Verkettung
von Werten auf folgende Weise zu verwenden (eine Zeichenkette mit zwei
direkt aufeinanderfolgenden Anführungszeichen):
Ein weiteres Zeichen mit besonderer Bedeutung ist $ (das
Dollarzeichen). Wenn darauf eine öffnende geschweifte Klammer folgt, muss
es maskiert werden:
Das Maskieren von Zeichen wird im Modus
INI_SCANNER_RAW nicht unterstützt (in diesem Modus
werden alle Zeichen verarbeitet wie sie sind).
Zu beachten ist, dass der ini-Parser keine Standard-Maskierungssequenzen
unterstützt (\n, \t etc.). Falls erforderlich,
muss das Ergebnis von parse_ini_file mit der
Funktion stripcslashes nachbearbeitet werden.
&reftitle.notes;
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.
Falls ein Wert der Ini-Datei ein nicht alphanumerisches Zeichen enthält
muss dieser Wert in doppelte Anführungszeichen (") eingeschlossen werden.
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 . Die Zeichen
?{}|&~!()^" dürfen in einem Schlüssel nicht
verwendet werden und haben im Wert besondere Bedeutung.
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.
Ini-Dateien werden von Webservern in der Regel als reiner Text behandelt
und daher den Browsern auf Anfrage zur Verfügung gestellt. Das bedeutet,
dass Sie aus Sicherheitsgründen entweder Ihre ini-Dateien außerhalb des
Web-Wurzelverzeichnisses (DocRoot) aufbewahren müssen oder Ihren Webserver
so umkonfigurieren, dass sie nicht ausgeliefert werden. Wenn Sie beides
nicht tun, kann dies ein Sicherheitsrisiko darstellen.
&reftitle.seealso;
parse_ini_string