• STATISTIQUES
  • Il y a eu un total de 0 membres et 40483 visiteurs sur le site dans les dernières 24h pour un total de 40 483 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Comment transformer le BBCode en HTML
17-06-2011, 04h23 (Modification du message : 19-11-2012, 19h18 par InstinctHack.)
Message : #1
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 157
Inscription : Jan 2012
[Php] Comment transformer le BBCode en HTML
Bonjour à tous ;-)
Comme vous le savez, permettre à l’utilisateur de poster du HTML c'est une très très mauvaise idée ... si vous en êtes pas encore convaincu, je vous invite a lire mon tuto sur les failles XSS. L'alternative pour permettre à l’utilisateur de formater leur texte est ce que l'ont nomme couramment le BBCode. C'est ce que nous utilisons ici sur MyBB et dans tous les forums de cette génération.

Voici une version simplifier d'une fonction que j’ai récemment utilisée sur un site internet.
Code PHP :
<?php

function bbcode($string)
{
   
$string stripcslashes($string);
   
    
/* Les smileys */
    
$string str_replace(":D""<img src='images/smileys/lol.gif'>"$string); // :D
    
$string str_replace(":P""<img src='images/smileys/p.gif'>"$string); // :P
    
$string str_replace(":)""<img src='images/smileys/lucky.gif'>"$string); // :)
    
$string str_replace(":(""<img src='images/smileys/red.gif'>"$string); // :(
    
$string str_replace(":/""<img src='images/smileys/hm.gif'>"$string); // :/
    
$string str_replace(";)""<img src='images/smileys/wink.gif'>"$string); // ;)
    
$string str_replace("8/7""<img src='images/smileys/head.gif'>"$string); // 8/7
    
$string str_replace(":-/""<img src='images/smileys/wink.gif'>"$string); // :-/
   
    /* Mise en forme texte */
    
$string preg_replace('/\[b\](.+?)\[\/b\]/''<b>$1</b>'$string); // [ b ][ /b ]
    
$string preg_replace('/\[i\](.+?)\[\/i\]/''<i>$1</i>'$string); // [ i ][ /i ]
    
$string preg_replace('/\[u\](.+?)\[\/u\]/''<u>$1</u>'$string); // [ u] [ /u ]
    
$string preg_replace('/\[size=(.+?)\](.+?)\[\/size\]/''<font size=$1>$2</font>'$string); // [ size=10 ][ /size ]
    
$string preg_replace('/\[color=(.+?)\](.+?)\[\/color\]/''<font color=$1>$2</font>'$string); // [ color=#FFFFFF ][ /color ]
   
    /* Images et url */
    
$string preg_replace('/\[img\](.+?)\[\/img\]/''<img src="$1" />'$string); // [ img ][ /img ]
    
$string preg_replace('/\[url\](.+?)\[\/url\]/''<a href="$1" target="_blank">$1</a>'$string); // [ url ][ /url ] 
    
$string preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/''<a href="$1" target="_blank">$2</a>'$string); // [ url=http:// ][ /url ]
    
$string preg_replace('/\[mail\](.+?)\[\/mail\]/''<a href="mailto:$1">$1</a>'$string); // [ mail ][ /mail ]

    /* Autre */
    
$string preg_replace('/\[left\](.+?)\[\/left\]/''<div align="left">$1<div>'$string); // [ left ][ /left ]
    
$string preg_replace('/\[center\](.+?)\[\/center\]/''<div align="center">$1<div>'$string); // [ center ][ /center ]
    
$string preg_replace('/\[right\](.+?)\[\/right\]/''<div align="right">$1<div>'$string); // [ right ][ /right ]
   
    /* Transforme les retours a la lige en <br> */
    
$string nl2br($string);

    return(
$string);
}
 
?>

Ce code va remplacer la version BBCode créée par l'utilisateur par la version HTML l'hors de l'affichage. Je vais pas entrer en détail pour chaque l'igne parce que le regex est tellement compliqué a comprendre pour les non initier qu'il mériterait un tuto a lui tout seul.

Code PHP :
$string preg_replace('/\[b\](.+?)\[\/b\]/''<b>$1</b>'$string); // [ b ][ /b ] 

Dand la phrase suivante, $sting va recevoir les données converties. preg_replace est la fonction utiliser pour appliquer ce que l'ont appelle le regex. Je vous invite a vous documenter sur le sujet ici. la chaine de caractère entre les guillemets peut sembler bizarre à première vue, mais il est en faite très simple. Je vous ferais un tuto sur le regex un de ses quatre. Le plus important a noté dans la chaine et la partie suivante (.+?) qui replacent la chaine de caractère qu'elle couvre par une variable réutilisable dans la string de remplacement par $1. s’il y'en avait plus d'un les variables serais $2 $3 $4 ext. La chaine suivante est la chaine de remplacement. Noter qu'ici on utilise $1 qui est égal au texte entre [ b ] et [ /b ]. On termine ensuite par la variable qui contient le texte en question.

Pour utiliser la fonction BBCode, il suffit d'appeler la fonction a l'affichage du texte Ex:
Code PHP :
<?php
echo bbcode('Blabla [b]blabla[/b]!');
?>

Veillez cité la source et l'auteur si vous désirer reprendre mon tuto.

Soyez intelligent et restez WhiteHat!
Par CyberSee
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[Php] Comment transformer le BBCode en HTML - par CyberSee - 17-06-2011, 04h23

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  comment afficher une portion de fichier gruik 12 512 09-05-2014, 22h44
Dernier message: fr0g
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 1,002 21-10-2012, 14h15
Dernier message: sakiir
  [Html] Pas assez rigoureux ?? Trukrone' 15 815 29-04-2012, 16h13
Dernier message: EpicOut
  [Html/Css] Positionnement de textes P4ND4 6 336 27-02-2012, 21h24
Dernier message: Venoa

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut