parse_ini_file

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_ini_fileParst eine Konfigurationsdatei

Beschreibung

parse_ini_file(string $filename, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false

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.

Parameter-Liste

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.

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.

Rückgabewerte

Im Erfolgsfall werden die Einstellungen als assoziatives Array zurückgegeben, ansonsten false.

Beispiele

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

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:

<?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
$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

Beispiel #4 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.

; | wird für bitweises OR verwendet
three = 2|3

; & wird für bitweises AND verwendet
four = 6&5

; ^ wird für bitweises XOR verwendet
five = 3^6

; ~ wird für bitweises Negieren verwendet
negative_two = ~1

; () wird für die Gruppierung verwendet
seven = (8|7)&(6|5)

path = $
also_five = $

Beispiel #5 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):

quoted = "She said \"Exactly my point\"." ; Ergibt eine Zeichenkette mit Anführungszeichen darin.
hint = "Use \\\" to escape double quote" ; Ergibt: Use \" to escape double quote

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:

save_path = "C:\Temp\"

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):

long_text = "Lorem \"ipsum\"""
 dolor" ; Ergibt: Lorem "ipsum"\n dolor

Ein weiteres Zeichen mit besonderer Bedeutung ist $ (das Dollarzeichen). Wenn darauf eine öffnende geschweifte Klammer folgt, muss es maskiert werden:

code = "\$"

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.

Anmerkungen

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 . 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.

Hinweis:

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.

Siehe auch

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?

In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...

TheMax

Autor : TheMax
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor
Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Hallöchen zusammen, ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dies ...

Geschrieben von derH0st am 11.04.2024 15:58:37
Forum: PHP Developer Forum
PHP 8.3.3 - App kann auf dem PC nicht ausgeführt werden

Problem gelöst. Die php.exe hatte einen defekt. Neue heruntergeladen und fertig.

Geschrieben von Tetra1081 am 10.04.2024 16:49:14
Forum: PHP Developer Forum