Support du web
Bookmark and Share
Vous êtes ici: Support du web > Scripts et tutoriaux > PHP / MYSQL > Parser du BBcode en (X)Html - convertir du bbcode en html/convertir du html en bbcode en utilisant les expressions réguliaires(regex)

Parser du BBcode en (X)Html - convertir du bbcode en html/convertir du html en bbcode en utilisant les expressions réguliaires(regex)

Parser du BBcode en (X)Html - convertir du bbcode en html/convertir du html en bbcode en utilisant les expressions réguliaires(regex) Parser du BBcode en (X)Html - convertir du bbcode en html/convertir du html en bbcode en utilisant les expressions réguliaires(regex)
Note : 4/5 (0 vote)
Derniéres modifications : 06/06/2009 à 02:57:58
Mots-Clés : bbcode parser html forum fonction php script convertir du bbcode en html convertion html en bbcode forum parseur de code bbcode Bulletin Board Code balises forum phpbb bbcode en php script gratuit regez convertion de bbcode expressions réguliaires fonctions php gratuite bbcode2html rendre texte html en bbcode html2bbcode gras italique lien image souligne barre centre gauche droite

Bonjour,
dans ce script, je vais vous apprendre comment parser(convertir) un code BBcode à un code (X)Html, en utilisant le langage de programmation PHP et plus précisément les Regex.

Pour commencer, le fonctionnement de ce script est simple, nous allons commencer par faire deux Array(Tableau), le premier Array contiendra la liste des regex de chacune des balises BBcode.Le deuxième, contiendra les regex de remplacement des balises (X)Html depuis le BBcode.

Ensuite, nous allons compter le nombre de cellules grâce à la fonction count pour connaitre le nombre de balises et ensuite faire une boucle qui parsera chaque balise BBcode au (X)html.

Bon, voici le script pour convertir du BBcode au (X)html:
Code: PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Parser du BBcode en (X)Html</title>
    </head>
    <body>
<?php
if(!isset($_GET['texte']))
{
        $_GET['texte'] = 'Texte Normal
[b]Gras[/b]
[i]Italique[/i]
[u]Souligné[/u]
[s]Barré[/s]
[img]http://www.supportduweb.com/ftp/ybouane/scripts_astuces/php/bbcode_parser/img_apercu.png[/img]
[url]http://www.supportduweb.com/[/url]
[url=http://www.supportduweb.com/]Support du Web[/url]
[left]Gauche[/left]
[center]Centré[/center]
[right]Droite[/right]'
;
}
$_GET['texte'] = stripslashes($_GET['texte']);
$texte = $_GET['texte'];
$texte = nl2br(htmlentities($texte));
$entree = array(
        '#\[b\](.*)\[/b\]#Usi',
        '#\[i\](.*)\[/i\]#Usi',
        '#\[u\](.*)\[/u\]#Usi',
        '#\[s\](.*)\[/s\]#Usi',
        '#\[img\](.*)\[/img\]#Usi',
        '#\[url\](.*)\[/url\]#Usi',
        '#\[url=(.*)\](.*)\[/url\]#Usi',
        '#\[left\](.*)\[/left\]#Usi',
        '#\[center\](.*)\[/center\]#Usi',
        '#\[right\](.*)\[/right\]#Usi'
    );
$sortie = array(
        '<strong>$1</strong>',
        '<em>$1</em>',
        '<span style="text-decoration:underline;">$1</span>',
        '<span style="text-decoration:line-through;">$1</span>',
        '<img src="$1" alt="Image" />',
        '<a href="$1">$1</a>',
        '<a href="$1">$2</a>',
        '<div style="text-align:left;">$1</div>',
        '<div style="text-align:center;">$1</div>',
        '<div style="text-align:right;">$1</div>'
    );
    $count = count($entree)-1;
    for($i=0;$i<=$count;$i++)
    {
        $texte = preg_replace($entree[$i],$sortie[$i],$texte);
    }
    echo '<em>Version visuelle(Aper&ccedil;u):</em><br />'.
    $texte.
    '<br /><br />'.
    '<em>Version (X)html:</em>'.
    '<pre>'.
    htmlentities($texte).
    '</pre>'.
    '<em>Version BBcode(&Agrave; &eacute;diter):</em><br />';
?>
        <form action="bbcode2html.php" method="get">
            <textarea cols="70" rows="10" name="texte"><?php echo htmlentities($_GET['texte']); ?></textarea><br />
            <input type="submit" value="Convertir" />
        </form>
    </body>
</html>

Pour faire l'inverse(convertir le (X)html au BBcode), nous allons simplement faire l'inverse dans les array mais aussi dans les regex.
Voci le script pour convertir le (X)html au BBcode:
Code: PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Parser du (X)Html en BBcode</title>
    </head>
    <body>
<?php
if(!isset($_GET['texte']))
{
        $_GET['texte'] = 'Texte Normal<br />
<strong>Gras</strong><br />
<em>Italique</em><br />
<span style="text-decoration:underline;">Soulign&eacute;</span><br />
<span style="text-decoration:line-through;">Barr&eacute;</span><br />
<img src="http://www.supportduweb.com/ftp/ybouane/scripts_astuces/php/bbcode_parser/img_apercu.png" alt="Image" /><br />
<a href="http://www.supportduweb.com/">http://www.supportduweb.com/</a><br />
<a href="http://www.supportduweb.com/">Support du Web</a><br />
<div style="text-align:left;">Gauche</div><br />
<div style="text-align:center;">Centr&eacute;</div><br />
<div style="text-align:right;">Droite</div>'
;
}
$_GET['texte'] = stripslashes($_GET['texte']);
$texte = $_GET['texte'];
$texte = str_replace('<br />','',$texte);
$entree = array(
                '#<strong>(.*)</strong>#Usi',
                '#<em>(.*)</em>#Usi',
                '#<span style="text-decoration:underline;">(.*)</span>#Usi',
                '#<span style="text-decoration:line-through;">(.*)</span>#Usi',
                '#<img src="(.*)" alt="Image" />#Usi',
                '#<a href="(.*)">(.*)</a>#Usi',
                '#<div style="text-align:left;">(.*)</div>#Usi',
                '#<div style="text-align:center;">(.*)</div>#Usi',
                '#<div style="text-align:right;">(.*)</div>#Usi'
        );
$sortie = array(
                '[b]$1[/b]',
                '[i]$1[/i]',
                '[u]$1[/u]',
                '[s]$1[/s]',
                '[img]$1[/img]',
                '[url=$1]$2[/url]',
                '[left]$1[/left]',
                '[center]$1[/center]',
                '[right]$1[/right]'
        );
        $count = count($entree)-1;
        for($i=0;$i<=$count;$i++)
        {
                $texte = preg_replace($entree[$i],$sortie[$i],$texte);
        }
        echo '<em>Version BBcode:</em>'.
        '<pre>'.
        str_replace('&amp;','&',htmlentities($texte)).
        '</pre>'.
        '<em>Version (X)html(&Agrave; &eacute;diter):</em><br />';
?>
        <form action="html2bbcode.php" method="get">
            <textarea cols="70" rows="10" name="texte"><?php echo str_replace('&amp;','&',htmlentities($_GET['texte'])); ?></textarea><br />
            <input type="submit" value="Convertir" />
        </form>
    </body>
</html>
Pour le deuxième code, il ne converti pas toutes les formes pour avoir un même résultat au BBcode mais seulement celle utilisée dans la première conversion.
Exemple:
<strong>Gras</strong> = <b>Gras</b>
Mais seul la première forme sera parsée

merci, j'espère que vous avez aimé ce script et qu'il vous sera utile.

Scripts et tutoriaux similaires à celui ci:

Commentaires

Ajouter un commentaire





Vous n'êtes actuellement pas connecté, certaines de vos informations(tel que votre Adresse IP) seront enregistrées pour éviter du spam.
Votre message ne doit pas contenir certains mots ou une adresse internet, sinon, il ne sera pas envoyé.

Les commentaires

Envoyé par James le 14/06/2009 à 15:24:09
Merci <a href="http://www.google.com">.</a>







Il y a actuellent 9 personne(s) connecté(es)
Page générée en 0.582804 secondes
Retour en haut
Règlements - Nous contacter - Aider le site - RSS News
Valide: (X)html 1.0 - Css 2.0 - RSS
Copyright © Support du web - Toute copie partielle ou complète de nos créations est interdite sans l'accord de ses auteurs.
Toutes les marques citées appartiennent à leurs compagnies respectives.