lundi 7 février 2005

Gestion de BB-Code


GESTION DE BB-CODE

Le bb-code est utilisé afin de simplifier l'utilisation de diverses fonctionnalités pour un usager. Souvent sur les sites lorsqu'on inscrit :), c'est une image avec un sourire... plusieurs images existent pour s'exprimer. Le bb-code consiste donc à taper un code qui sera transformé en une image ou en un autre code.

L'usager pourrait toujours taper http://www.yahoo.com, mais c'est beaucoup plus simple pour lui de faire [url]www.yahoo.com[/url]. En fait, on n'a qu'à filtrer le code que l'usager entre.

function bbcode($m) {
    switch($m[1]) {
        // balise <code>
        case 'code' :
           return '<div class="code"><pre>'.htmlentities($m[2]).'</pre></div>'; 
        break;
        // balise <url>
        case 'url' :
          if (preg_match ('`^http://`', $m[2]))
            return '<a href="'.$m[2].'" class="machin">'.$m[2].'</a>';
          else
            return '<a href="http://'.$m[2].'" class="machin">'.$m[2].'</a>'; 
        break;
        // balsie <img>
        case 'img' :
        return '<img src="'.$m[2].'" alt="mon image"/>';
    }
}
La fonction ci-dessus est appelée avec:
$st4="mon site web préféré est: [url]www.laboiteaprog.com[/url]
$str = preg_replace_callback('`\[(code|url|img)\](.+?)\[/\1\]`si', 'bbcode', $str);

Chaque fois que les mots: code, url ou img se retrouveront en [], la fonction bbcode est appelée. Pour avoir cet effet, preg_replace_callback est utilisé. $m[1] contient les mots et $m[2] contient ce qui entre les tags. Par exemple avec <url>www.yahoo.com</url>, url est le mot et www.yahoo.com est ce qui entre les deux. Lorsque le mot code est trouvé, ce qui est entre les balises sera affiché dans un div. Tel que montré, nous pouvons convertir le code aisément, ce qui permet d'utiliser des fichiers css et de personnaliser davantage ce qui est écrit sans trop de difficulté pour l'usager. Pour le mot url, on vérifie si la chaîne contient http://, si elle le contient pas, on l'ajoute.

Nous avons vu comment créer le bb-code, dans l'exemple montré, les balises s'écrivaient: [tag]. Cette fonction retourne la chaîne après les changements effectués. C'est donc cette chaîne qui doit être insérée dans la BD ou fichier si vous désirez sauvegarder le tout. Le script montré ci-dessus a été inspiré à partir d'un autre de source inconnue.