*Généré le " . date('Y-m-d H:i:s') . "*\n\n"; $report .= "---\n\n"; // 4. BOUCLE D'EXTRACTION foreach ($iterator as $file) { if ($file->isDir()) continue; $filePath = $file->getPathname(); $relativePath = str_replace($root . DIRECTORY_SEPARATOR, '', $filePath); $relativePath = str_replace('\\', '/', $relativePath); // Uniformisation Windows/Linux // Extraction de l'extension $ext = strtolower(pathinfo($filePath, PATHINFO_EXTENSION)); // A. Filtrage par dossier $skip = false; foreach ($excludeDirs as $dir) { // Si le chemin commence par ce dossier, ou contient /ce_dossier/ if (strpos($relativePath, $dir . '/') === 0 || strpos($relativePath, '/' . $dir . '/') !== false) { $skip = true; break; } } if ($skip) continue; // B. Filtrage par nom de fichier if (in_array(basename($filePath), $excludeFiles)) continue; // C. Filtrage par extension if (!in_array($ext, $allowedExtensions)) continue; // 5. LECTURE ET FORMATAGE $content = file_get_contents($filePath); if ($content === false) { $content = "// Erreur lors de la lecture de ce fichier."; } // Ajustement du tag de langage pour le Markdown $lang = $ext; if ($ext === 'js') $lang = 'javascript'; if ($ext === 'yml') $lang = 'yaml'; $report .= "### 📄 Fichier : `$relativePath`\n"; $report .= "```$lang\n"; $report .= trim($content) . "\n"; $report .= "```\n\n---\n\n"; } // 6. SORTIE echo $report;