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


  • ANNUAIRE
  • [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    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: 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 511 09-05-2014, 22h44
Dernier message: fr0g
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 991 21-10-2012, 14h15
Dernier message: sakiir
  [Html] Pas assez rigoureux ?? Trukrone' 15 814 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