• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Config Datei auslesen und zerlegen

Beavis

Mitglied
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:
Code:
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.:
Code:
$datei = array("filterscripts" => "b_attach irp_cmd","plugins" => "mysql streamer",....):
Wie kann ich das so umsetzen?
 
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.'<br />';
       $str .= str_replace($line, ' ', '=', $count) ."\n";
     }
     echo "str: <br />";
     print_r($str);
     return parse_ini_string($str);
   }
Heraus kommt das
Code:
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
Code:
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
Code:
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("<br />", 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));
    }
In verbindung mit den Code
Code:
$configFile = parseConfig(file_get_contents($Path.'\\Samp_'.$Port.'\\server.cfg'));
klappts 1A
aber danke das du es versucht hast
 
Soetwas
PHP:
$config = explode("<br />", nl2br($config));
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)
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');
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben