'', 'title' => '', 'version' => '', 'nav' => [], ]; $inNav = false; foreach (preg_split('/\R/', $yaml) ?: [] as $line) { $trimmed = trim($line); if ('' === $trimmed || str_starts_with($trimmed, '#')) { continue; } if (preg_match('/^([a-zA-Z0-9_-]+):\s*(.*)$/', $trimmed, $matches)) { $key = $matches[1]; $value = trim($matches[2], " \"'"); $inNav = 'nav' === $key; if (array_key_exists($key, $data) && 'nav' !== $key) { $data[$key] = $value; } continue; } if ($inNav && preg_match('/^-\s*(.+)$/', $trimmed, $matches)) { $data['nav'][] = trim($matches[1], " \"'"); } } return $data; } }