samedi, avril 20, 2024
Nom d'utilisateur : Mot de passe :
Sur un site Web quand on veut que les visiteurs puissent envoyer ou laisser des messages, ce n'est pas forcément une idée géniale d'autoriser le HTML. En effet, non seulement le HTML est relativement "complexe" à saisir pour une personne qui n'a pas l'habitude, mais en plus cela peut provoquer des failles de sécurité importantes si le HTML n'a pas parfaitement filtré. C'est pour cela que les programmeurs de phpBB ont mis au point le BBCode qui permet une saisie simplifiée et une sécurité accroue.
Je vous propose ici une implémentation personnelle du BBCode, qui intègre, dans la même classe, des fonctionnalités de filtrage et de conversion.

Pour télécharger la dernière version du script, il suffit de vous rendre dans la rubrique téléchargement.

[NEWS]
Envoyé par unreal
Ce petit guide devrait vous permettre d'exploiter rapidement la classe BBCode.



1. Les préliminaires

Avant toute utilisation de la classe, il vous faut insérer le fichier et créer un nouvel objet (comme pour toute classe php) :

require_once ('inc/inc_cg_filter.php');
$filter = new cg_filter;


2. Le filtre HTML

La fonction html_filter() offre plusieurs fonctionnalités interessantes, telles que le filtrage html (htmlentities), la conversion des \n en sauts de ligne (nl2br) et la détection automatique des liens et smileys.

Par défaut, les 4 options sont activées, mais il est possible d'en désactiver certaines et d'en laisser d'autres en positionnant l'array $html_filter_prefs avant d'appeler la fonction html_filter() :

$filter->html_filter_prefs['entities'] = 0; // Désactive le filtrage HTML.
$filter->html_filter_prefs['smileys'] = 0; // Désactive la détection des smileys.


Quand la détection des smileys est active, il est possible de configurer le path vers le dossier contenant les smileys :

$filter->smiley_path = 'smileys/'; // Il ne faut pas oublier le / final !


Passons maintenant au convertisseur BBCode.

3. Le convertisseur BBCode <-> HTML

Le convertisseur se compose de 2 fonctions : bbcode_to_html() et html_to_bbcode(), qui permettent de convertir dans un sens ou l'autre.

Le paragraphe suivant vous donnera un apperçu des possibilités de cette classe.
Note : dans les exemples, des espaces sont rajoutés pour que les balises ne soient pas interprétées.

  • [b ]texte[/b ], [i ]texte[/i ] et [u ]texte[/u ] : permet d'afficher du texte en gras, italique ou surligné.
  • [align=center ]texte[/align ] et [align=right ]texte[/align ] : permet de postionner le texte.
  • [img ]http://site.com/image.jpg[/img ] : permet d'insérer une image
  • [url=http://site.com ][/url ] ou [url=http://site.com ]Site[/url ] : permet d'insérer un lien.
  • [list ]
    [* ] élément 1
    [* ] élément 2
    [/list ] : permet de réaliser une liste sans ordre.
  • [quote ]texte[/quote ] : rajoute un style pour faire apparaître le texte (très utile pour citer).
  • [anchor ]paragraphe1[/anchor ] : insère une ancre nommée


4. Exemple d'utilisation

Si le reste n'était pas totalement clair, essayez cet exemple !

bbcode_test.php
<?php
require_once ('inc/inc_cg_filter.php');
$filter = new cg_filter;

$filter->html_filter_prefs['url_parsing'] = 0; // On désactive la détection automatique des liens

// Enlevez les espaces dans les balises !
$filter->string = "[b ]En gras ![/b ]\n[i ]En italique ![/i ]\n[u ]En surligné ![/u ]\n[b ][i ][u ]En gras, italique et surligné ![/u ][/i ][/b ]\n\n";

$filter->html_filter(); // Filtrage HTML
$filter->bbcode_to_html(); // Conversion BBCode en HTML;

echo ($filter->string); // Affichage HTML

$filter->html_to_bbcode(); // Conversion HTML en BBCode

echo ($filter->string); // Affichage BBCode
?>


5. Conclusion

N'hésitez pas à tester tout ça et de faire part de vos remarques ! happy.gif


Posté le 30/03/05 à 01:13 - 7 Commentaires...