2016-04-03 5 views
3

誰かがPHPでyamlファイルを読む方法を知っていますか?私が欲しいのは、読者のようなものです。PHPでYamlを読む

私と私の友人がMinecraft Serverを作成しており、サーバーとサイトを接続したいと考えています。そのためには、サーバーファイルにあるYAMLファイルを読むための読者が必要です。このファイルには、users.ymlを呼び出し、それが次のコードである内部:

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. 

新しいプレイヤーがプレイするために、サーバーに接続すると、このファイルは自動的にこのような新しい段落(これは新しいプレーヤーである)作成します。

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

は、管理者、例えば、管理者の一つは、このコマンドを入力している次のようになります/ manuadd(プレイヤー名)管理と、それは自動的に当社のウェブサイトではusers.yml

に編集します、ホームページでは、最も重要なgroをボックスに表示したい

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

結論として、私たちが望むのは自動的に動作するということです(ヘルパーと管理者)。これは、誰かが管理者になれば、PHP ReaderはYAMLコードを読んで、上のHTMLコードのようにウェブサイトに出力します。あなたはYAMLを解析し、symfony/yamlを使ってYAMLに配列をダンプすることができ

答えて

2

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

を今すぐあなたの例を解析するために、私は有効なYAMLのコメントで<<<<を置き換え:

$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.'); 

今度聞かせてグループのすべて最初の割り当てられたグループによるプレーヤー:

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

$groupsは次のようになります。

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

あなたがPHPテンプレートにその配列を渡す場合は、このようなあなたの出力を達成できます。

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

私は私のウェブサイトでのSymfonyをインストールする方法を知っているドント。 ..私はどのようにインストールするのですか? –

+0

あなたはSymfonyの全てを必要とせず、Yamlライブラリのみが必要です。最近、Composer経由でPHPライブラリをインストールするのがベストプラクティスです。https://getcomposer.org/ セットアップが完了すると、簡単な 'composer require symfony/yaml'がダウンロードし、Composerのオートローダー経由で利用できるようになります。 とにかく、これはこの質問の対象外ですので、それを働かせることができない場合は、SOに関する新しい質問を作成してください。 –

+0

それは私にこのエラーを与えました:構文エラー、予期しない 'a11'(T_STRING)、/home/u471174751/public_html/staff.phpの38行目に予期しない '012' -3a0e-8346-4790ee4304fc] =>配列 –

関連する問題