W3docs

parse_ini_string()

Die Funktion parse_ini_string() ist eine eingebaute PHP-Funktion, die einen String im INI-Format analysiert und ein assoziatives Array mit den Werten zurückgibt.

Was ist die Funktion parse_ini_string()?

Die Funktion parse_ini_string() analysiert einen String im INI-Konfigurationsformat und gibt dessen Inhalt als assoziatives Array zurück. Sie ist das speicherbasierte Pendant zu parse_ini_file(): Anstatt Einstellungen aus einer Datei auf der Festplatte zu lesen, liest sie diese aus einem String, den Sie bereits in einer Variablen gespeichert haben.

Dies ist nützlich, wenn Konfigurationsdaten von woanders als einer lokalen Datei stammen — einer Datenbankspalte, einer HTTP-Antwort, einer Umgebungsvariablen oder einem Here-Doc, das in Ihren Code eingebettet ist. Das INI-Format selbst ist dasselbe, das PHP für php.ini verwendet: key = value-Paare, optionale [section]-Header und ;-Kommentare.

Diese Seite behandelt die Funktionssignatur, die Ausgabe mit und ohne Abschnitte, die drei Scanner-Modi sowie die häufigsten Stolpersteine (reservierte Wörter, Sonderzeichen und Parse-Fehler).

Syntax

parse_ini_string(
    string $ini_string,
    bool $process_sections = false,
    int $scanner_mode = INI_SCANNER_NORMAL
): array|false
ParameterBeschreibung
$ini_stringDer im INI-Format vorliegende String, der analysiert werden soll.
$process_sectionsWenn true, wird das zurückgegebene Array nach [section] verschachtelt. Standard ist false (flach).
$scanner_modeEines von INI_SCANNER_NORMAL, INI_SCANNER_RAW oder INI_SCANNER_TYPED.

Die Funktion gibt bei Erfolg ein assoziatives Array zurück, oder false bei einem Fehler.

Einfaches Beispiel

Beginnen Sie mit einem flachen String aus key = value-Paaren und lesen Sie die Werte anhand des Schlüssels zurück:

<?php

$config = parse_ini_string(
    "; Example configuration string\n" .
    "name = John Doe\n" .
    "email = [email protected]\n" .
    "phone = 555-555-5555"
);

echo $config['name'];  // John Doe
echo $config['email']; // [email protected]
echo $config['phone']; // 555-555-5555

Die erste Zeile, die mit ; beginnt, ist ein Kommentar und wird ignoriert. Jede weitere Zeile wird zu einem Eintrag im zurückgegebenen Array, dessen Schlüssel der Name links vom = ist.

Werte nach Abschnitt gruppieren

INI-Dateien organisieren verwandte Einstellungen oft unter [section]-Headern. Übergeben Sie true als zweites Argument, um diese Struktur im Ergebnis beizubehalten — jeder Abschnitt wird zu einem verschachtelten Array:

<?php

$ini = "[settings]\nname = John Doe\nemail = [email protected]";

$config = parse_ini_string($ini, true);
print_r($config);

Ausgabe:

Array
(
    [settings] => Array
        (
            [name] => John Doe
            [email] => [email protected]
        )

)

Wenn $process_sections auf dem Standardwert false belassen wird, wird der [settings]-Header verworfen und Sie erhalten ein einzelnes flaches Array mit name und email.

Scanner-Modi

Das dritte Argument steuert, wie Werte interpretiert werden:

  • INI_SCANNER_NORMAL (Standard) — Werte werden als Strings zurückgegeben, und Konstanten/Sonderwörter werden ausgewertet.
  • INI_SCANNER_RAW — Werte werden genau so zurückgegeben, wie sie geschrieben wurden, ohne jegliche Interpretation. Verwenden Sie dies, um literale Strings zu erhalten.
  • INI_SCANNER_TYPED — Booleans, Zahlen und null werden in ihre nativen PHP-Typen konvertiert statt als Strings zurückgegeben.

INI_SCANNER_TYPED ist für echte Konfigurationen am nützlichsten, da es Ihnen erspart, Strings manuell umzuwandeln:

<?php

$ini = "debug = true\nretries = 3\ntimeout = 1.5";

$config = parse_ini_string($ini, false, INI_SCANNER_TYPED);
var_dump($config);

Ausgabe:

array(3) {
  ["debug"]=>
  bool(true)
  ["retries"]=>
  int(3)
  ["timeout"]=>
  float(1.5)
}

Im normalen Modus wären dieselben Werte alle Strings ("1" für true, "3", "1.5").

Reservierte Wörter und Anführungszeichen

Einige Zeichen und Wörter haben im INI-Format eine besondere Bedeutung, daher sollten Sie auf folgendes achten:

  • Die Wörter true, false, on, off, yes, no, none und null werden im Typed-Modus als Booleans/null und im normalen Modus als "1"/"" interpretiert. Wenn Sie den wörtlichen Text benötigen, schließen Sie den Wert in Anführungszeichen ein oder verwenden Sie INI_SCANNER_RAW.
  • Die Zeichen ?{}|&~!()^" sind reserviert und dürfen nicht außerhalb eines zitierten Werts verwendet werden.
  • Ein Wert, der Leerzeichen oder Sonderzeichen enthält, sollte in Anführungszeichen stehen: path = "C:\Program Files".

Umgang mit Parse-Fehlern

parse_ini_string() gibt false zurück, wenn der Eingabe-String nicht analysiert werden kann. Prüfen Sie daher das Ergebnis, bevor Sie es verwenden:

<?php

$config = parse_ini_string($_POST['config'] ?? '', true);

if ($config === false) {
    echo 'Invalid configuration string.';
} else {
    // safe to use $config here
    print_r($config);
}

Ein leerer Wert ist kein Fehler — name = ergibt einfach einen leeren String für diesen Schlüssel. Echte Fehler entstehen durch fehlerhafte Syntax, beispielsweise wenn ein nicht in Anführungszeichen gesetzter Wert reservierte Zeichen enthält.

Wann sollte man es verwenden?

Greifen Sie auf parse_ini_string() zurück, wenn:

  • Konfigurationstext bereits im Speicher vorhanden ist (aus einer Datenbank, einer API oder einem Stream geladen) und nicht auf der Festplatte liegt.
  • Sie ein einfaches, abhängigkeitsfreies Konfigurationsformat wünschen, das auch Nicht-Entwickler bearbeiten können.
  • Sie INI-Inhalt validieren oder transformieren möchten, bevor Sie ihn in einer Datei speichern.

Wenn die Konfiguration in einer tatsächlichen Datei liegt, verwenden Sie stattdessen parse_ini_file() — es liest und analysiert in einem Schritt. Für komplexere Datenstrukturen empfiehlt sich JSON über json_decode().

Fazit

parse_ini_string() wandelt einen INI-formatierten String in ein PHP-Array um, mit optionaler Abschnittsgrupierung und drei Scanner-Modi zur Steuerung der Typkonvertierung. Verwenden Sie $process_sections, um die [section]-Struktur beizubehalten, bevorzugen Sie INI_SCANNER_TYPED, wenn Sie echte Booleans und Zahlen benötigen, und prüfen Sie bei nicht vertrauenswürdiger Eingabe immer auf einen false-Rückgabewert.

Übungen

Übung
Was macht die PHP-Funktion 'parse_ini_string'?
Was macht die PHP-Funktion 'parse_ini_string'?
Was this page helpful?