$niveau_precedent) { $resultat .= str_repeat("\n", $niveau_precedent - $niveau); if ($niveau > 0 && $ligne != "") $resultat .= "\n
  • \n$ligne\n"; } $niveau_precedent = $niveau; } $resultat .= str_repeat("
  • \n\n", $niveau_precedent); return $resultat; } function wiki_formater_lien($lien_externe, $lien) { preg_match("/^([^#|]*)#?([^|]*)\|?(.*)$/", $lien, $matches); $nom_page = $matches[1]; $nom_ancre = $matches[2]; $texte_lien = $matches[3]; if ($nom_page == "" && $nom_ancre == "") return $texte_lien; if ($texte_lien == "") { if ($nom_page != "") $texte_lien = $nom_page; else $texte_lien = $nom_ancre; } if ($nom_page != "") { if ($lien_externe == "") { $url_lien = url("page", $nom_page); } else { $url_lien = htmlentities($nom_page, ENT_QUOTES, "UTF-8"); } } if ($nom_ancre != "") $url_lien .= "#" . htmlentities(urlencode($nom_ancre), ENT_QUOTES, "UTF-8"); return "" . $texte_lien . ""; } function wiki_base($tags, $nom_resultat) { $donnees = $tags[$nom_resultat]; $tags["niveau entetes"] = ($tags["niveau entetes"] != "") ? $tags["niveau entetes"] : 0; $niveau_entetes = $tags["niveau entetes"]; /* === Titres === */ $donnees = preg_replace('/^(={1,6})\s*(.*?)\s*\1$/me', '"\n

    \n$2\n

    "', $donnees); /* '''Emphases''' */ $donnees = preg_replace("/'''''(.*)'''''/Um", '$1', $donnees); /* À éviter */ $donnees = preg_replace("/'''(.*)'''/Um", '$1', $donnees); $donnees = preg_replace("/''(.*)''/Um", '$1', $donnees); /* [Liens internes] et [[liens externes]] */ // TODO : capture : [xyz]], le 2e ] ne devrait être capturé que s'il y en a deux au début. $donnees = preg_replace('/\[(\[?)([^]]*?)\]\]?/me', "wiki_formater_lien('$1', unquote('$2'))", $donnees); /* * Listes */ $donnees = preg_replace('/^([ \t]*\*[ \t*]+.*\n?)+/me', "'\n

    \n' . wiki_formater_liste(unquote('$0')) . '

    \n'", $donnees); /* Paragraphes (les lignes vides séparent les paragraphes) */ $donnees = preg_replace('/^/', "

    \n", $donnees); $donnees = preg_replace('/$/D', "\n

    ", $donnees); $donnees = preg_replace('/^\n/m', "\n

    \n

    \n", $donnees); $donnees = preg_replace('/

    \s*<\/p>/m', '', $donnees); /* Nettoyage du code xhtml */ $donnees = preg_replace('/^\n/m', '', $donnees); $donnees = preg_replace('/(

    )([^\n])/m', "$1\n$2", $donnees); $tags[$nom_resultat] = $donnees; return $tags; } enregisterPlugin("wiki"); ?>