diff --git a/includes/lib/markdown.php b/includes/lib/markdown.php index b00e341..c2968d7 100644 --- a/includes/lib/markdown.php +++ b/includes/lib/markdown.php @@ -37,8 +37,9 @@ function markdown_to_html($markdown) { }, $markdown); // Détection et conversion des URLs brutes en liens cliquables - $urlPattern = '/(https?:\/\/[^\s<]+[^\s<\.)])/i'; - $markdown = preg_replace_callback($urlPattern, function($matches) use (&$links, &$link_count) { + // 1. URLs avec protocole http/https + $protocolUrlPattern = '/(https?:\/\/[^\s<]+[^\s<\.)])/i'; + $markdown = preg_replace_callback($protocolUrlPattern, function($matches) use (&$links, &$link_count) { $url = $matches[1]; $placeholder = "___LINK_{$link_count}___"; @@ -47,7 +48,25 @@ function markdown_to_html($markdown) { return $placeholder; }, $markdown); - + + // 2. Domaines sans protocole (comme "o-k-i.net", "gong.gp", "NUVEL.NU") + // Détecte les domaines avec TLD communs qui ne font pas partie d'autre chose + $domainPattern = '/\b([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+([a-zA-Z]{2,63})\b/'; + $markdown = preg_replace_callback($domainPattern, function($matches) use (&$links, &$link_count) { + $domain = $matches[0]; + + // Éviter de convertir des éléments qui ressemblent à des versions/numéros ou qui sont déjà dans des liens + if (preg_match('/^v?\d+\.\d+/', $domain) || strpos($domain, '___LINK_') !== false) { + return $domain; + } + + $placeholder = "___LINK_{$link_count}___"; + $links[$placeholder] = '' . $domain . ''; + $link_count++; + + return $placeholder; + }, $markdown); + // Conversion du texte en gras et italique (**texte** et *texte*) $markdown = preg_replace('/\*\*(.*?)\*\*/s', '$1', $markdown); $markdown = preg_replace('/\*(.*?)\*/s', '$1', $markdown); @@ -65,11 +84,11 @@ function markdown_to_html($markdown) { // Nettoyage des balises br dans les listes $markdown = preg_replace('/<\/li>
/', '', $markdown); - + // Restaurer les liens foreach ($links as $placeholder => $link) { $markdown = str_replace($placeholder, $link, $markdown); } - + return $markdown; } \ No newline at end of file