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


  • ANNUAIRE
  • [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster

  • 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


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  comment afficher une portion de fichier gruik 12 514 09-05-2014, 22h44
Dernier message: fr0g
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 1,013 21-10-2012, 14h15
Dernier message: sakiir
  [Html] Pas assez rigoureux ?? Trukrone' 15 816 29-04-2012, 16h13
Dernier message: EpicOut
  [Html/Css] Positionnement de textes P4ND4 6 338 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