Config Datei auslesen und zerlegen

guten zusammen

Ich bin den ganzen Tag am überlegen wie ich eine config datei auslesen kann und deren Inhalt in einen Array absicher.
Da ich Internetprobleme habe konnte ich nicht wirklich google nutzen um das zu suchen was ich benötige.

Ich habe in der Configdatei das drinstehen:

filterscripts b_attach irp_cmd plugins mysql streamer .....

Ich möchte die so zerlegen, das er mir das ausgibt was hinter den ersten wort steht also als Bsp.:

$datei = array("filterscripts" => "b_attach irp_cmd","plugins" => "mysql streamer",....):

Wie kann ich das so umsetzen?

Hilft das: http://php.net/manual/de/function.parse-ini-file.php ?

Da ich keine 15 Minuten warten will um eine Seite zu laden habe ich mal etwas rumprobiert

Nur hier wird es absolut falsch gesetzt…
hier mal der Code mit den debug
[php] function readServerConfig($path) {
$file = fopen($path, ‚r‘);
$str = ‚‘;$count = 1;
while($line = fgets($file)){
echo $line.‚
‘;
$str .= str_replace($line, ’ ', ‚=‘, $count) .„\n“;
}
echo „str:
“;
print_r($str);
return parse_ini_string($str);
}[/php]
Heraus kommt das

echo Executing Server Config... lanmode 0 rcon_password 1234 maxnpc 1 maxplayers 101 port 7777 hostname SA-MP 0.3 Server gamemode0 irp filterscripts b_attach irp_cmd plugins mysql streamer announce 0 query 1 chatlogging 0 weburl www.sa-mp.com onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000 logtimeformat [%H:%M:%S] str: = = = = = = = = = = = = = = = = = = = = Warning: syntax error, unexpected '=' in Unknown on line 1 in D:\xampp\htdocs\include\config.php on line 36

So wie ich die Funktion verstehe, kannst du dir das vorherige zeilenweise Auslesen der Datei sparen. Das wird anscheinend alles von der Funktion übernommen.

Da kommt der Fehler bei raus

Warning: syntax error, unexpected $end, expecting '=' in D:\Servers\Samp_7777\server.cfg on line 20 in D:\xampp\htdocs\include\config.php on line 29

Der Inhalt ist der

echo Executing Server Config... lanmode 0 rcon_password 1234 maxnpc 1 maxplayers 101 port 7777 hostname SA-MP 0.3 Server gamemode0 irp filterscripts b_attach irp_cmd plugins mysql streamer announce 0 query 1 chatlogging 0 weburl www.sa-mp.com onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000 logtimeformat [%H:%M:%S]

Bin nicht so bewandert mit PHP. Daher muss ich ins Blaue raten.
Ich denke der Aufbau deiner Config-Datei ist „falsch“. Anscheinend brauchst du vor jeder Wertzuweisung ein „=“.

Nach einigen hilferein kam endlich was bei raus

[CODE] function parseConfig($config)
{
$config = explode(„
“, nl2br($config));
$config = array_map(function($n) {
$posisition = strpos($n, " ");

        if (false !== $posisition) {
          $n = substr_replace($n, "=", $posisition, 1);
        }

        return trim($n);
    }, $config);

    return parse_ini_string(implode("\n", $config));
}[/CODE]

In verbindung mit den Code

$configFile = parseConfig(file_get_contents($Path.'\\Samp_'.$Port.'\\server.cfg'));

klappts 1A
aber danke das du es versucht hast

Soetwas
[PHP]$config = explode(„
“, nl2br($config));[/PHP]
ist doch völliger Quatsch. Warum liest du die Datei nicht mit file ein, dann hast du ein Array, was du brauchst?
[PHP]$config = array_map(function($n)[/PHP]
Warum machst du da keine eigene Funktion auf, anstatt sie erst per array_map zu erzeugen?

Guck mal:
[PHP]function parseConfig($filename)
{
$result = array();

$data = file($filename);

foreach($data as $line)
{
$values = explode(" „, $line);
$key = array_shift($values);
$result[$key] = implode(“ ", $values);
}

return $result;
}

$configFile = parseConfig($Path.‚\Samp_‘.$Port.‚\server.cfg‘);[/PHP]