Datum: ...') $date = date('Y-m-d'); // Fallback na dnes foreach ($lines as $line) { if (preg_match('/> Datum:\s*(.*)/', $line, $matches)) { $rawDate = trim($matches[1]); // Zkusíme převedení na formát Y-m-d $parsedDate = strtotime($rawDate); if ($parsedDate) { $date = date('Y-m-d', $parsedDate); } break; } } // 3. Vyčištění excerptu // Odstraníme Markdown syntaxi pro lepší čitelnost ve vyhledávání $cleanContent = $content; $cleanContent = preg_replace('/^#.*$/m', '', $cleanContent); // Odstranit nadpisy $cleanContent = preg_replace('/\*\*(.*?)\*\*/', '$1', $cleanContent); // Odstranit tučné $cleanContent = preg_replace('/\*(.*?)\*/', '$1', $cleanContent); // Odstranit kurzívu $cleanContent = preg_replace('/`(.+?)`/', '$1', $cleanContent); // Odstranit inline kód $cleanContent = strip_tags($cleanContent); // Odstranit HTML (pokud nějaký vznikl) $cleanContent = preg_replace('/\s+/', ' ', $cleanContent); // Sjednotit mezery $cleanContent = trim($cleanContent); $excerpt = mb_substr($cleanContent, 0, 150); if (strlen($cleanContent) > 150) { $excerpt .= '...'; } $articles[] = [ 'title' => $title, 'slug' => $filename, // Používáme filename jako slug pro hledání 'date' => $date, 'excerpt' => $excerpt ]; } // Seřazení podle data (nejnovější první) usort($articles, function($a, $b) { return strtotime($b['date']) - strtotime($a['date']); }); // Cesta k výstupu $outputDir = __DIR__ . '/../public/data/'; // Vytvoř složku, pokud neexistuje if (!is_dir($outputDir)) { if (!mkdir($outputDir, 0755, true)) { die("Chyba: Nelze vytvořit složku $outputDir\n"); } } $outputFile = $outputDir . 'articlesSearch.json'; if (file_put_contents($outputFile, json_encode($articles, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))) { echo "✅ Index vygenerován úspěšně: " . count($articles) . " článků do $outputFile\n"; } else { die("❌ Chyba: Nelze zapsat soubor $outputFile\n"); }