]*>(.*?)<\/h1>/i', $content, $matches)) { return strip_tags($matches[1]); } return null; } function formatNorwegianDate(string $dateString): string { if (preg_match('/^(\d{4})-(\d{2})-(\d{2})/', $dateString, $matches)) { $months = ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']; $day = (int)$matches[3]; $month = $months[(int)$matches[2] - 1]; $year = $matches[1]; return "$day. $month $year"; } return $dateString; } function extractDateFromFolder(string $folderName): ?string { if (preg_match('/^(\d{4})-(\d{2})-(\d{2})-/', $folderName, $matches)) { return formatNorwegianDate($matches[1] . '-' . $matches[2] . '-' . $matches[3]); } return null; } function findCoverImage(string $dirPath): ?string { $extensions = ['jpg', 'jpeg', 'png', 'webp', 'gif']; foreach ($extensions as $ext) { if (file_exists("$dirPath/cover.$ext")) { return "cover.$ext"; } } return null; } function findPdfFile(string $dirPath): ?string { $files = scandir($dirPath) ?: []; foreach ($files as $file) { if (pathinfo($file, PATHINFO_EXTENSION) === 'pdf') { return $file; } } return null; }