"-", "—" => "-", "‘" => "'", "’" => "'", "…" => "...", "“" => "\"", "”" => "\"", " "=>" ", #"<"=>"<", ">"=>">", "œ"=>"oe","…"=>"...","’"=>"'"); $texte = strtr($texte,$unicode); $texte = str_replace("\r\n","\n",$texte); $texte = str_replace("\r","",$texte); $texte = str_replace("\t"," ",$texte); $texte = stripslashes($texte); return $texte; } // nettoyage suivant l'appel d'une fonction function nettoyer_apres($texte) { $texte = trim($texte); // retours à la ligne $texte = nl2br($texte); $texte = str_replace("
\n
\n","

\n

",$texte); $texte = "

".$texte."

"; $texte = str_replace("\\a","\n",$texte); // Pour les retours à la ligne de formatage du code if($this->parse_urls == "oui") { // URLs (+ gestion des liens Peercast et ed2k) $texte = eregi_replace( "(^|[ \t\r\n>])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|peercast|ed2k):". "[A-Za-z0-9/](([A-Za-z0-9$|.+!*(),;/?:@&~=_#-])|%[A-Fa-f0-9]{2})+)","\\1\\2",$texte); $texte = eregi_replace("(^|[ \t\r\n>])([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)", "\\0", $texte); } return $texte; } function transform($texte) { if($this->nettoyages == "oui") $texte = $this->nettoyer_avant($texte); // Raccourcis simples: intertitres, gras, italique $tablo = array("{{{" => "

", "}}}" => "

", "{{" => "", "}}" => "", "{" => "", "}" => ""); $texte = strtr($texte,$tablo); $texte = ereg_replace("----+","
",$texte); // Barres horizontales // Puces (ne prend pas en compte les niveaux de profondeurs, du moins pas encore) $texte = ereg_replace("(^|\n)-([*#]+)?","\\1
  • ",$texte); // Pour les liens spécifiques vers des articles, des brèves ou des rubriques: [Article->112] // A décommenter si vous voyez l'utilité de ces liens. // Attention: les liens de type [->article 3212] ne sont pas gérés, cette classe ne pouvant // récupérer le titre de l'article. #$texte = preg_replace("/\[([^\n]+)-(>|>)(ecrit|ecrit )?([0-9]+)\]/Ui","\\1",$texte); # $texte = preg_replace("/\[([^\n]+)-(>|>)(br|breve |brève )([0-9]+)\]/Ui","\\1",$texte); # $texte = preg_replace("/\[([^\n]+)-(>|>)(rub|rubrique )([0-9]+)\]/Ui","\\1",$texte); // Liens $texte = preg_replace("/\[([^\n]+)-(>|>)([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)\]/Ui", "\\1",$texte); $texte = preg_replace("/\[([^\n]+)-(>|>)([^\]]+)\]/Ui","\\1",$texte); // Notes de bas de page preg_match_all("/\[\[([^\]]+)\]\]/Ui",$texte,$out,PREG_SET_ORDER); $a = 1; for($i=0; $i < count($out); $i++) { if(preg_match("/(<|<)([^> &]+)(>|>)/Ui",$out[$i][1],$out2)) { $note = $out2[2]; $out[$i][1] = str_replace($out2[0],"",$out[$i][1]); } else { $note = $a; $a++; } $texte = str_replace($out[$i][0], '['.$note.']',$texte); if($i == 0) $texte.= '


    '; } // Tableaux (piqué directement dans spip même si j'aimerais refaire ça avec des regex) $texte = ereg_replace("^\n?\|","\n\n|",$texte); $texte = ereg_replace("\|\n?$","|\n\n",$texte); $tableBeginPos = strpos($texte, "\n\n|"); $tableEndPos = strpos($texte, "|\n\n"); while(is_integer($tableBeginPos) && is_integer($tableEndPos) && $tableBeginPos < $tableEndPos + 3) { $textBegin = substr($texte, 0, $tableBeginPos); $textTable = substr($texte, $tableBeginPos + 2, $tableEndPos - $tableBeginPos); $textEnd = substr($texte, $tableEndPos + 3); $newTextTable = "\n\n"; if($this->xhtml == "oui") $newTextTable = "\n\n
    "; $rowId = 0; $lineEnd = strpos($textTable, "|\n"); while(is_integer($lineEnd)) { $rowId++; $row = substr($textTable, 0, $lineEnd); $textTable = substr($textTable,$lineEnd+2); if ($rowId == 1)// && ereg("^(\\|[[:space:]]*\\{\\{[^}]+\\}\\}[[:space:]]*)+$", $row)) { $newTextTable .= ''; } else { $newTextTable .= ''; } $newTextTable .= ereg_replace("\|([^\|]+)", "", $row); $newTextTable .= ''; $lineEnd = strpos($textTable, "|\n"); } $newTextTable .= "
    \\1
    \n"; $texte = $textBegin . $newTextTable . $textEnd; $tableBeginPos = strpos($texte, "\n\n|"); $tableEndPos = strpos($texte, "|\n\n"); } $texte = trim($texte); if($this->nettoyages == "oui") $texte = $this->nettoyer_apres($texte); return $texte; } } function spip($texte) { $spip = new SPIP(); $texte = $spip->transform($texte); return $texte; } ?>