Créer un compte
Connexion

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) Le 29/07/2013 à 05:04:31
Note: 4/5
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:
<!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>
Essayer

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:
<!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>
Essayer
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 Tutoriels similaires

Simple PHP Forum Script - Forum en php facile simple script code telecharger forum php gratuit mysql Simple PHP Forum Script - Forum en php facile simple script code telecharger forum php gratuit mysql Timestamp en Date - Convertir un timestamp en une date Timestamp en Date - Convertir un timestamp en une date [GD]Écrire un texte sur une image avec une police TTF - imagettftext [GD]Écrire un texte sur une image avec une police TTF - imagettftext [PHP]Compteur de pages vues - script php [PHP]Compteur de pages vues - script php [PHP]Compteur de visites - scripts php [PHP]Compteur de visites - scripts php