Signatur
Beschreibung
parse_ini_string() verarbeitet einen String im INI-Format – wie er etwa in einer php.ini oder einer eigenen Konfigurationsdatei vorkommt – und wandelt ihn in ein PHP-Array um. Im Gegensatz zu parse_ini_file() liest diese Funktion aus einer Zeichenkette statt aus einer Datei, was sie ideal für Konfigurationen macht, die aus einer Datenbank, einer API-Antwort oder einem Speicher-Puffer stammen.
Wird der Parameter process_sections auf true gesetzt, liefert die Funktion ein mehrdimensionales Array, bei dem die Sektionsbezeichner (z. B. [database]) die Schlüssel der ersten Ebene bilden. Ohne Sektionsverarbeitung werden alle Schlüssel-Wert-Paare flach in einem einzigen Array zusammengefasst.
Über den Parameter scanner_mode lässt sich das Verhalten beim Typen-Parsing steuern: INI_SCANNER_NORMAL wandelt Werte wie true, false, yes, no, none und null automatisch in PHP-Typen um, während INI_SCANNER_RAW alle Werte als Strings belässt. INI_SCANNER_TYPED (ab PHP 5.6.1) versucht darüber hinaus, numerische Werte als int oder float zu erkennen.
Die Funktion eignet sich hervorragend für Unit-Tests von Konfigurationslogik, für das Einlesen von Konfigurationen aus Umgebungsvariablen oder für die Verarbeitung dynamisch erzeugter INI-Inhalte ohne Dateizugriff.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ini_string Pflicht | string | Der zu parsende String im INI-Format. Kommentare werden mit ; eingeleitet, Sektionen mit eckigen Klammern ([section]) und Schlüssel-Wert-Paare mit = getrennt. |
|
| $process_sections | bool | false | Ist dieser Wert true, werden Sektionsbezeichner als übergeordnete Schlüssel im Rückgabe-Array verwendet, sodass ein mehrdimensionales Array entsteht. |
| $scanner_mode | int | INI_SCANNER_NORMAL | Steuert, wie Werte interpretiert werden. Mögliche Werte: INI_SCANNER_NORMAL (Standard, konvertiert bekannte Bezeichner wie true/false), INI_SCANNER_RAW (alle Werte bleiben Strings), INI_SCANNER_TYPED (zusätzlich numerische Typkonvertierung, ab PHP 5.6.1). |
Rückgabewert
false zurückgegeben.Beispiele
Einfache INI-Konfiguration parsen
<?php
$ini = "
; Datenbankeinstellungen
host = localhost
port = 3306
name = meine_datenbank
debug = true
";
$config = parse_ini_string($ini);
print_r($config);
Mehrere Sektionen verarbeiten
<?php
$ini = "
[database]
host = localhost
port = 3306
user = root
password = geheim
[cache]
driver = redis
ttl = 3600
enabled = true
";
$config = parse_ini_string($ini, process_sections: true);
echo $config['database']['host'] . PHP_EOL;
echo $config['cache']['driver'] . PHP_EOL;
echo $config['cache']['ttl'] . PHP_EOL;
Scanner-Modus INI_SCANNER_TYPED verwenden
<?php
$ini = "
anzahl = 42
preis = 9.99
aktiv = true
name = Produkt
";
$raw = parse_ini_string($ini, scanner_mode: INI_SCANNER_RAW);
$typed = parse_ini_string($ini, scanner_mode: INI_SCANNER_TYPED);
var_dump($raw['anzahl']); // string
var_dump($typed['anzahl']); // int
var_dump($typed['preis']); // float
var_dump($typed['aktiv']); // bool
// Wichtig · Fallstricke
Sicherheitshinweis: Verarbeite niemals ungeprüfte Benutzereingaben als INI-String. Obwohl parse_ini_string() keine Dateien liest, können manipulierte INI-Inhalte unerwartete Array-Strukturen erzeugen und Anwendungslogik korrumpieren.
Reservierte Wörter: Schlüsselnamen wie null, yes, no, true, false, on, off, none sind im Modus INI_SCANNER_NORMAL reserviert und werden automatisch konvertiert (z. B. yes → 1, no → ""). Mit INI_SCANNER_RAW bleiben sie als Strings erhalten.
Anführungszeichen: Werte mit Sonderzeichen oder Leerzeichen sollten in doppelte Anführungszeichen eingeschlossen werden, z. B. name = "Mein Wert".