• STATISTIQUES
  • Il y a eu un total de 1 membres et 8327 visiteurs sur le site dans les dernières 24h pour un total de 8 328 personnes!


    Membres: 2 444
    Discussions: 3 588
    Messages: 32 835
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking

  • 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: 158
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 4,631 09-05-2014, 22h44
Dernier message: fr0g
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 6,365 21-10-2012, 14h15
Dernier message: sakiir
  [Html] Pas assez rigoureux ?? Trukrone' 15 5,719 29-04-2012, 16h13
Dernier message: EpicOut
  [Html/Css] Positionnement de textes P4ND4 6 2,170 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