Convertisseur BBCode – HTML

26 Juil

Depuis le temps que j’en cherchais un, j’ai fini par trouver mon bonheur : un convertisseur BBCode en HTML en PHP !

Et surtout : sans code superflu ! (Voir en fin d’article le lien pour télécharger le fichier)

Petite explication et exemple d’utilisation :

<?
// inclusion du fichier
require_once (‘/inc_cg_filter.php’);
// déclaration d’une nouvelle instance de filtre
$filter = new cg_filter;
?>

Une fois que vous avez créer votre instance de filtre, vous pouvez le paramétrer comme vous le souhaitez.

// Il est possible de désactiver le filtrage HTML
$filter->html_filter_prefs[‘entities’] = 0;
// Désactiver la reconnaissance des \n en tant que retour chariots
$filter->html_filter_prefs[‘nl2br’] = 0;
// Désactiver la détection des urls
$filter->html_filter_prefs[‘url_parsing’] = 0;
// Et pour finir de désactiver la détection des smileys
$filter->html_filter_prefs[‘smileys’] = 0;
// Si vous activez la détection des smileys, il vous faudra spécifier le chemin d’accès aux images
$filter->smiley_path = ‘images/smileys/’; // /!\ Il ne faut pas oublier le / final ! /!\

Le plus simple consiste ensuite à appeler les fonctions de conversion bbcode_to_html() et html_to_bbcode().

<?
$filter->string = « Mon texte sympatique en [b]gras[/b] »;

// Filtrage HTML paramétrer ci-dessus

$filter->html_filter();
// Conversion du BBCode en HTML
$filter->bbcode_to_html();
echo ($filter->string);
// Conversion dans l’autre sens : du HTML en BBCode
$filter->html_to_bbcode();
echo ($filter->string);
?>

Toutes les balises sont quasiment détectées.
Il est assez simple d’aller farfouiller dans le code pour en rajouter une… Mais les explications seraient trop longues pour que je rentre dans les détails.
Si vous avez besoin, n’hésitez pas à me demander en laissant un commentaire : je verrai ce que je peux faire 😉

NB : Si vous utilisez un forum PhpBB (qui utilise par définition le BBCode), il peut arriver que certaines balises soient stockées en base sous la forme : [url:a1213fdf12]http://google.fr[/url:a1213fdf12]
Cette chaine de caractère a1213fdf12 correspond en fait au champ ‘bbcode_uid’ stocké dans votre base de données avec le message.
Avant d’utiliser les fonctions de filtrage ci-dessus, il vous suffira de faire un petit remplacement simple :

<?
$filter = str_replace(« : ».$bbcode_uid, » »,$texte);
?>

Cliquez ici pour le télécharger : inc_cg_filter.php [Il vous faudra le renommer en .php pour pouvoir l’utiliser… (mais cela va de soit non ?) ]


Pas encore de commentaire

Faire un commentaire

*