2016-04-03 18 views
3

Jemand weiß, wie ich eine YAML-Datei mit PHP lesen konnte? Was ich will, ist so etwas wie ein Leser.YAML mit PHP lesen

Ich und meine Freunde erstellen einen Minecraft Server und wir wollen den Server mit der Site verbinden. Dazu benötigen wir einen Reader, um die YAML-Datei zu lesen, die sich in unseren Serverdateien befindet. Diese Datei ruft users.yml und im Inneren der nächste Code ist:

users: 
     80679a11-1d47-3a0e-8346-4790ee4304fc:  <<<< Player Code. 
     group: 
     - Admin         <<<< Player Group. 
     options: 
      name: JamesMarch      <<<< Player Nick Name. 
     56874a35-8f52-5f2c-7843-7788je9670tb:  <<<< Player Code. 
     group: 
     - Admin         <<<< Player Group. 
     options: 
      name: Angelow98      <<<< Player Nick Name. 
     55026444-cb34-3a27-a270-d7d07fccca0a:  <<<< Player Code. 
     group: 
     - Helper        <<<< Player Group. 
     options: 
      name: iDatSnoow_      <<<< Player Nick Name. 

Wenn ein neuer Spieler auf dem Server eine Verbindung zu spielen, wird diese Datei erstellt automatisch einen neuen Absatz wie folgt (Dies ist ein neuer Spieler):

84569a84-5d77-3a5e-8547-4720ee4304fc: <<<< Player Code. 
    group: 
    - NewPlayer       <<<< Player Group (NewPlayer is the default group) 
    options: 
     name: mumiant_      <<<< Player Nick Name. 

der Spieler ein Administrator wird zum Beispiel einer der Administratoren, diesen Befehl hat ein:/manuadd (Spielername) Admin, und es wird in users.yml

auf unserer Website automatisch bearbeiten, auf der Startseite möchten wir in einer Box die wichtigsten gro anzeigen ups (Helfer und Administratoren) wie dieser einfache HTML-Code:

<h1>Staff</h1> 
    <h2>Administrators</h2> 
     <p>Angelow98</p> 
     <p>JamesMarch</p> 
    <h2>Helper</h2> 
     <p>iDatSnoow_</p> 

Abschließend wollen wir, dass es automatisch funktioniert. Das heißt, wenn jemand Administrator wird, liest der PHP Reader den YAML-Code und druckt ihn auf der Webseite aus, wie der obige HTML-Code.

Antwort

2

Sie können YAML analysieren und Dump ein Array zu YAML symfony/yaml mit:

use Symfony\Component\Yaml\Yaml; 
$yaml = Yaml::parse(file_get_contents('/path/to/file.yml')); 
$yamlString = Yaml::dump($yaml); 

Jetzt Ihr Beispiel zu analysieren, ich ersetzt die <<<< mit gültigen YAML Kommentare:

$data = \Symfony\Component\Yaml\Yaml::parse('users: 
    80679a11-1d47-3a0e-8346-4790ee4304fc:  # Player Code. 
    group: 
    - Admin         # Player Group. 
    options: 
     name: JamesMarch      # Player Nick Name. 
    56874a35-8f52-5f2c-7843-7788je9670tb:  # Player Code. 
    group: 
    - Admin         # Player Group. 
    options: 
     name: Angelow98      # Player Nick Name. 
    55026444-cb34-3a27-a270-d7d07fccca0a:  # Player Code. 
    group: 
    - Helper        # Player Group. 
    options: 
     name: iDatSnoow_      # Player Nick Name.'); 

Jetzt Gruppe lassen alle Spieler nach ihrer ersten zugewiesenen Gruppe:

$groups = array(); 
foreach ($data['users'] as $playerCode => $player) { 
    $firstGroupName = $player['group'][0]; 
    $groups[$firstGroupName][$playerCode] = $player; 
} 

$groups nun wie folgt aussieht:

Array 
(
    [Admin] => Array 
     (
      [80679a11-1d47-3a0e-8346-4790ee4304fc] => Array 
       (
        [group] => Array 
         (
          [0] => Admin 
         ) 
        [options] => Array 
         (
          [name] => JamesMarch 
         ) 
       ) 
      [56874a35-8f52-5f2c-7843-7788je9670tb] => Array 
       (
        [group] => Array 
         (
          [0] => Admin 
         ) 
        [options] => Array 
         (
          [name] => Angelow98 
         ) 
       ) 
     ) 

    [Helper] => Array 
     (
      [55026444-cb34-3a27-a270-d7d07fccca0a] => Array 
       (
        [group] => Array 
         (
          [0] => Helper 
         ) 

        [options] => Array 
         (
          [name] => iDatSnoow_ 
         ) 
       ) 
     ) 
) 

Wenn Sie das Array an ein PHP-Vorlage passieren, könnten Sie Ihre Ausgabe wie folgt erreichen:

<?php foreach($groups as $group => $players): ?> 
<h1><?= $group ?></h1> 
<?php foreach ($players as $playerCode => $player): ?> 
<p><?= $player['options']['name'] ?> </p> 
<?php endforeach; ?> 
<?php endforeach; ?> 
+0

Ich weiß nicht, wie Symfony in meiner Website zu installieren. .. Wie installiere ich? –

+0

Sie brauchen nicht nur Symfony, sondern nur die Yaml-Bibliothek. Heutzutage ist es am besten, PHP-Bibliotheken über Composer zu installieren: https://getcomposer.org/ Einmal eingerichtet, würde ein einfacher 'composer require symfony/yaml' es herunterladen und es über den Autoloader des Composers verfügbar machen. Wie auch immer, dies ist für diese Frage nicht möglich. Wenn Sie es nicht schaffen, erstellen Sie eine neue Frage zu SO. –

+0

es gab mir diesen Fehler: Parse-Fehler: Syntaxfehler, unerwartete 'a11' (T_STRING), erwartet ']' in /home/u471174751/public_html/staff.php Zeile 38 Zeile 38 ist dies: [80679a11-1d47 -3a0e-8346-4790ee4304fc] => Array –