有人知道如何用php读取yaml文件?我想要的是像读者一样的东西.
我和我的朋友正在创建一个Minecraft服务器,我们希望将服务器连接到站点.为此,我们需要读者阅读我们服务器文件中的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.
Run Code Online (Sandbox Code Playgroud)
当新玩家连接到服务器进行播放时,此文件会自动创建一个这样的新段落(这是一个新玩家):
84569a84-5d77-3a5e-8547-4720ee4304fc: <<<< Player Code.
group:
- NewPlayer <<<< Player Group (NewPlayer is the default group)
options:
name: mumiant_ <<<< Player Nick Name.
Run Code Online (Sandbox Code Playgroud)
对于播放器成为管理员,例如,其中一个管理员,输入以下命令:/ manuadd(播放器名称)管理员,它将自动编辑users.yml
在我们的网站上,在主页上,我们希望在一个方框中显示最重要的组(帮助者和管理员),就像这个简单的HTML代码:
<h1>Staff</h1>
<h2>Administrators</h2>
<p>Angelow98</p>
<p>JamesMarch</p>
<h2>Helper</h2>
<p>iDatSnoow_</p>
Run Code Online (Sandbox Code Playgroud)
总之,我们想要的是它自动运作.这就是,当有人成为管理员时,PHP阅读器将读取YAML代码,它将在网站上打印,就像上面的HTML代码一样.
您可以使用symfony / yaml解析YAML并将数组转储到YAML :
use Symfony\Component\Yaml\Yaml;
$yaml = Yaml::parse(file_get_contents('/path/to/file.yml'));
$yamlString = Yaml::dump($yaml);
Run Code Online (Sandbox Code Playgroud)
现在分析您的示例,我<<<<用有效的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.');
Run Code Online (Sandbox Code Playgroud)
现在,让我们将所有玩家按他们的第一个分配的分组:
$groups = array();
foreach ($data['users'] as $playerCode => $player) {
$firstGroupName = $player['group'][0];
$groups[$firstGroupName][$playerCode] = $player;
}
Run Code Online (Sandbox Code Playgroud)
$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_
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
如果将该数组传递给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; ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6406 次 |
| 最近记录: |