"-", "—" => "-", "‘" => "'", "’" => "'", "…" => "...", "“" => "\"", "”" => "\"", " "=>" ", #"<"=>"<", ">"=>">", "œ"=>"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; } // Pour la balise [code] du bbcode function _code($texte) { return "

".str_replace(" ","  ",$texte[1])."

"; } // Traitement du BBCode function transform($texte) { // Si on est pas dans l'exécution de totale et que les nettoyages sont activés, on nettoie if($this->nettoyages == "oui") $texte = $this->nettoyer_avant($texte); // Tags simples $tablo = array( "[b]" => "", "[/b]" => "", "[u]" => "", "[/u]" => "", "[i]" => "", "[/i]" => "", "[center]"=>"
","[/center]"=>"
", "[/font]"=> "", "[/color]"=>"", "[/size]"=>""); $texte = strtr($texte,$tablo); // Couleurs, fontes, tailles $texte = preg_replace("|\[font=([a-z]+)\]|Ui","",$texte); $texte = preg_replace("|\[size=([1-7])\]|Ui","",$texte); // Pour les forums Invision $texte = preg_replace("§\[size=([1-4][0-9]|[89])\]§Ui","",$texte); // Forums phpBB $texte = preg_replace("§\[color=(#[0-9A-F]{6}|[a-z]+)\]§Ui","",$texte); // Citations $texte = preg_replace("|\[quote\]|Ui","

",$texte); $texte = preg_replace("|\[quote=[\"']?([^\"']+)[\"']?\]|Ui","

\\1 a dit:

\\a",$texte); $texte = preg_replace("|\[/quote\]|Ui","

",$texte); // Code source $texte = preg_replace_callback("|\[code\]([^\[]+)\[/code\]|Ui",array(&$this,_code),$texte); // Barre horizontale $texte = preg_replace("|\[hr\]|Ui","
\\a",$texte); // Images $texte = preg_replace("|\[img\]([^\[]+)\[/img\]|Ui","\"\"",$texte); // Adresses URLs $texte = preg_replace("|\[url=([^\]]+)\]([^\[]+)\[/url\]|Ui","\\2",$texte); $texte = preg_replace("|\[url\]([^\[]+)\[/url\]|Ui","\\1",$texte); $texte = preg_replace("§\[email]([^\[]+)\[/email\]§Ui","\\1",$texte); // Listes à puces $texte = eregi_replace("\[/list\]","[/list]",$texte); // Pour passer en minuscules while(eregi("\[list(=([1a])?)?\]",$texte,$out)) { $deb = strpos($texte,$out[0]); $txt = substr($texte,$deb); $fin = strpos($txt,"[/list]"); $txt = substr($txt,0,$fin+7); // On détermine le type de liste if($out[2] == "1") $in = '
    '; elseif($out[2] == "a") $in = '
      '; elseif(!empty($out[1])) $in = '
        '; else $in = "
          "; // Hop on construit la liste $lst = $in."\\a".substr($txt,strlen($out[0]),-7); $lst = preg_replace("/\[\*\](.+?)/U","
        • \\1
        • \\a",$lst); $lst = str_replace("\n\n","\\b",$lst); $lst = str_replace("\n","",$lst); $lst = str_replace("\\b","\n\n",$lst); if(!empty($out[1])) $lst.= "
      "; else $lst.= ""; $texte = str_replace($txt,$lst."\\a",$texte); } if($this->nettoyages == "oui") $texte = $this->nettoyer_apres($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 bbcode($texte) { $bbcode = new BBcode(); $texte = $bbcode->transform($texte); return $texte; } ?>