|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
DU BBCODE AU (X)HTML
Information sur la source
Description
Ce code permet d'utiliser du bbcode à la place du HTML, pour des raisons de sécurité et de simplicité pour les utilisateurs :) Merci de noter que c'est mon premier code sur phpcs ^__^' (voir tout premier code publié <__<') Pensez bien à prendre les balises <style></style> (configuration modifiable à souhait) Merci de signaler si vous voyez d'autres balises à ajouter dans les commentaires si il le faut :-)
Source
- <style>
- .code {
- border: 1px solid #657985;
- padding-left: 10px;
- background-color:#d3dbdf;
- }
-
- .quote {
- border: 1px dotted #657985;
- padding-left: 10px;
- background-color:#eeeeee;
- }
- </style>
- <?php
- //By Talus
- function parse_css($texte) {
- $texte[1] = html_entity_decode($texte[1], true);
-
- $texte[1] = preg_replace('`((.*)(:)(.*)(;))+`x','<span style="color: navy;">$2</span><span style="color: fuchsia;">$3</span><span style="color: blue;">$4</span><span style="color: fuchsia;">$5</span>', $texte[1]);
-
- $texte[1] = preg_replace('`((.*) \n? {)`x','<span style="color: fuchsia;">$1</span>', $texte[1]);
- $texte[1] = preg_replace('`(/\*(.*)\*/)`xs','<span style="color: gray;">$1</span>', $texte[1]);
- $texte[1] = str_replace('}','<span style="color: fuchsia;">}</span>', $texte[1]);
-
- $texte[1] = preg_replace('`<span style="color: (.*);">(.*)</span>`sU', '<span style="color:$1">[color=$1]$2[/color]</span>',$texte[1]);
-
- $texte[1] = str_replace('\n','', $texte[1]);
- $texte[1] = preg_replace('`(/\*\n?(.*)\n?\*/)`xsU','', $texte[1]);
-
- return '<br /><strong>Code CSS</strong> :<br /><div class="code">' . $texte[1] . '</div><br />';
- }
- function php_code($code){ //Colorisation de Code PHP
- return '<br /><div class="code_top">Script PHP :</div><div class="code_main">' . highlight_string(html_entity_decode($code[1]), true) . '</div><br />';
- }
- function forum_code($chaine,$xhtml = FALSE ){
- /* Paramètre autorisant (ou non) le HTML dans la chaine $chaine, et autorisant les sauts de lignes*/
- $chaine = nl2br(!$xhtml ? htmlentities($chaine) : $chaine);
-
- // Bloc des balises [url]-[/url]
- $chaine = preg_replace('`\[url=([http://].+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$2</a>',$chaine);
- $chaine = preg_replace('`\[url=(.+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$2</a>',$chaine);
- $chaine = preg_replace('`\[url]([http://].+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$1</a>',$chaine);
- $chaine = preg_replace('`\[url](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$1</a>',$chaine);
-
- // Bloc des balises [b]-[/b]
- $chaine = preg_replace('#\[b](.+?)\[/b]#si','<strong>$1</strong>',$chaine);
-
- // Bloc des balises [u]-[/u]
- $chaine = preg_replace('#\[u](.+?)\[/u]#si','<span style="text-decoration:underline;">$1</span>',$chaine);
-
- // Bloc des balises [i]-[/i]
- $chaine = preg_replace('#\[i](.+?)\[/i]#si','<em>$1</em>',$chaine);
-
- // Bloc des balises [strike]-[/strike]
- $chaine = preg_replace('#\[strike](.+?)\[/strike]#si','<span style="text-decoration:line-through;">$1</span>',$chaine);
-
- // Bloc des balises [overline]-[/overline]
- $chaine = preg_replace('#\[overline](.+?)\[/overline]#si','<span style="text-decoration:overline;">$1</span>',$chaine);
-
- // Bloc des balises [code]-[/code]
- $chaine = preg_replace('#\[code](.+?)\[/code]#si','<br /><strong>div :</strong> :<br /><div class="div">$1</div><br />',$chaine);
- $chaine = preg_replace_callback('#\[code=css](.+?)\[/code]#si','parse_css',$chaine);
- $chaine = preg_replace_callback('#\[code=php](.+?)\[/code]#si','php_code',$chaine);
-
- // Bloc des balises [quote]-[/quote]
- $chaine = preg_replace('#\[quote=me](.+?)\[/quote]#si','<br /><strong>J\'ai écrit</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
- $chaine = preg_replace('#\[quote=(.+?)](.+?)\[/quote]#si','<br /><strong>$1 a écrit</strong> :<br/><div class="quote">$2 </div><br />',$chaine);
- $chaine = preg_replace('#\[quote](.+?)\[/quote]#si','<br /><strong>Citation</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
-
- // Bloc des balises [img]-[/img]
- $chaine = preg_replace('#\[img=(.+?)](.+?)\[/img]#si','<img src="$1" border="0" alt="$2" />',$chaine);
- $chaine = preg_replace('#\[img](.+?)\[/img]#si','<img src="$1" border="0" />',$chaine);
-
- // Bloc des balises [mail]-[/mail]
- $chaine = preg_replace('#\[mail=([mailto:].+?)](.+?)\[/mail]#si','<a href="$1">$2</a>',$chaine);
- $chaine = preg_replace('#\[mail=(.+?)](.+?)\[/mail]#si','<a href="mailto:$1">$2</a>',$chaine);
- $chaine = preg_replace('#\[mail]([mailto:].+?)\[/mail]#si','<a href="$1">$1</a>',$chaine);
- $chaine = preg_replace('#\[mail](.+?)\[/mail]#si','<a href="mailto:$1">$1</a>',$chaine);
-
- // Bloc des balises [align]-[/align]
- $chaine = preg_replace('#\[align=(left|center|right)](.+?)\[/align]#si','<div style="text-align:$1; width:100%;">$2</div>',$chaine);
-
- // Bloc des balises [color]-[/color]
- $chaine = preg_replace('#\[color=(.+?)](.+?)\[/color]#si','<span style="color:$1;">$2</span>',$chaine);
-
- // Bloc des balises [size]-[/size]
- $chaine = preg_replace('#\[size=([0-9]{1,2})](.+?)\[/size]#si','<span style="font-size:$1px;">$2</span>',$chaine);
-
- // Bloc des balises [thick]-[/thick]
- $chaine = preg_replace('#\[thick=([0-9]{1,3})](.+?)\[/thick]#si','<span style="font-weight:$1px;">$2</span>',$chaine);
-
- // Bloc des balises [style]-[/style]
- $chaine = preg_replace('#\[style=(normal|italique|oblique)](.+?)\[/style]#si','<span style="font-style:$1;">$2</span>',$chaine);
-
- // Bloc des balises [weight]-[/weight]
- $chaine = preg_replace('#\[weight=(lighter|bold|bolder)](.+?)\[/weight]#si','<span style="font-weight:$1;">$2</span>',$chaine);
-
- // Bloc des balises [decoration]-[/decoration]
- $chaine = preg_replace('#\[decoration=(underline|line-through|overline|blink)](.+?)\[/decoration]#si','<span style="font-weight:$1;">$2</span>',$chaine);
-
- // Bloc des balises [font]-[/font]
- $chaine = preg_replace('#\[font=(.+?)](.+?)\[/font]#si','<span style="font-family:$1;">$2</span>',$chaine);
-
- // Bloc des balises [list]-[/list]
- $chaine = preg_replace('`\[list=(circle|disc|square|i)](.+?)\[/list]`si','<ul type="$1">$2</ul>',$chaine);
- $chaine = preg_replace('`\[list](.+?)\|/list]`si','<ul>$1</ul>',$chaine);
-
- // Bloc des balises [*]
- $chaine = preg_replace('`\[\*=(circle|disc|square|i)](.+?)`si','<li type="$1">$2',$chaine);
- $chaine = preg_replace('`\[\*](.+?)`si','<li>$1',$chaine);
-
- return $chaine;
- }
- // /!\ Appel de la fonction : echo forum_code($chaine);
- /* IMPORTANT : PENSEZ A METTRE LES STYLES (balises) POUR UNR BONNE MISE EN FORME DE CERTAINES BALISES TELLES QUE LES [div], [QUOTE] ! */
- echo forum_code('[code=php]<?php echo 'coucou'; ?>[/code]');
- ?>
<style>
.code {
border: 1px solid #657985;
padding-left: 10px;
background-color:#d3dbdf;
}
.quote {
border: 1px dotted #657985;
padding-left: 10px;
background-color:#eeeeee;
}
</style>
<?php
//By Talus
function parse_css($texte) {
$texte[1] = html_entity_decode($texte[1], true);
$texte[1] = preg_replace('`((.*)(:)(.*)(;))+`x','<span style="color: navy;">$2</span><span style="color: fuchsia;">$3</span><span style="color: blue;">$4</span><span style="color: fuchsia;">$5</span>', $texte[1]);
$texte[1] = preg_replace('`((.*) \n? {)`x','<span style="color: fuchsia;">$1</span>', $texte[1]);
$texte[1] = preg_replace('`(/\*(.*)\*/)`xs','<span style="color: gray;">$1</span>', $texte[1]);
$texte[1] = str_replace('}','<span style="color: fuchsia;">}</span>', $texte[1]);
$texte[1] = preg_replace('`<span style="color: (.*);">(.*)</span>`sU', '<span style="color:$1">[color=$1]$2[/color]</span>',$texte[1]);
$texte[1] = str_replace('\n','', $texte[1]);
$texte[1] = preg_replace('`(/\*\n?(.*)\n?\*/)`xsU','', $texte[1]);
return '<br /><strong>Code CSS</strong> :<br /><div class="code">' . $texte[1] . '</div><br />';
}
function php_code($code){ //Colorisation de Code PHP
return '<br /><div class="code_top">Script PHP :</div><div class="code_main">' . highlight_string(html_entity_decode($code[1]), true) . '</div><br />';
}
function forum_code($chaine,$xhtml = FALSE ){
/* Paramètre autorisant (ou non) le HTML dans la chaine $chaine, et autorisant les sauts de lignes*/
$chaine = nl2br(!$xhtml ? htmlentities($chaine) : $chaine);
// Bloc des balises [url]-[/url]
$chaine = preg_replace('`\[url=([http://].+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$2</a>',$chaine);
$chaine = preg_replace('`\[url=(.+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$2</a>',$chaine);
$chaine = preg_replace('`\[url]([http://].+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$1</a>',$chaine);
$chaine = preg_replace('`\[url](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$1</a>',$chaine);
// Bloc des balises [b]-[/b]
$chaine = preg_replace('#\[b](.+?)\[/b]#si','<strong>$1</strong>',$chaine);
// Bloc des balises [u]-[/u]
$chaine = preg_replace('#\[u](.+?)\[/u]#si','<span style="text-decoration:underline;">$1</span>',$chaine);
// Bloc des balises [i]-[/i]
$chaine = preg_replace('#\[i](.+?)\[/i]#si','<em>$1</em>',$chaine);
// Bloc des balises [strike]-[/strike]
$chaine = preg_replace('#\[strike](.+?)\[/strike]#si','<span style="text-decoration:line-through;">$1</span>',$chaine);
// Bloc des balises [overline]-[/overline]
$chaine = preg_replace('#\[overline](.+?)\[/overline]#si','<span style="text-decoration:overline;">$1</span>',$chaine);
// Bloc des balises [code]-[/code]
$chaine = preg_replace('#\[code](.+?)\[/code]#si','<br /><strong>div :</strong> :<br /><div class="div">$1</div><br />',$chaine);
$chaine = preg_replace_callback('#\[code=css](.+?)\[/code]#si','parse_css',$chaine);
$chaine = preg_replace_callback('#\[code=php](.+?)\[/code]#si','php_code',$chaine);
// Bloc des balises [quote]-[/quote]
$chaine = preg_replace('#\[quote=me](.+?)\[/quote]#si','<br /><strong>J\'ai écrit</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
$chaine = preg_replace('#\[quote=(.+?)](.+?)\[/quote]#si','<br /><strong>$1 a écrit</strong> :<br/><div class="quote">$2 </div><br />',$chaine);
$chaine = preg_replace('#\[quote](.+?)\[/quote]#si','<br /><strong>Citation</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
// Bloc des balises [img]-[/img]
$chaine = preg_replace('#\[img=(.+?)](.+?)\[/img]#si','<img src="$1" border="0" alt="$2" />',$chaine);
$chaine = preg_replace('#\[img](.+?)\[/img]#si','<img src="$1" border="0" />',$chaine);
// Bloc des balises [mail]-[/mail]
$chaine = preg_replace('#\[mail=([mailto:].+?)](.+?)\[/mail]#si','<a href="$1">$2</a>',$chaine);
$chaine = preg_replace('#\[mail=(.+?)](.+?)\[/mail]#si','<a href="mailto:$1">$2</a>',$chaine);
$chaine = preg_replace('#\[mail]([mailto:].+?)\[/mail]#si','<a href="$1">$1</a>',$chaine);
$chaine = preg_replace('#\[mail](.+?)\[/mail]#si','<a href="mailto:$1">$1</a>',$chaine);
// Bloc des balises [align]-[/align]
$chaine = preg_replace('#\[align=(left|center|right)](.+?)\[/align]#si','<div style="text-align:$1; width:100%;">$2</div>',$chaine);
// Bloc des balises [color]-[/color]
$chaine = preg_replace('#\[color=(.+?)](.+?)\[/color]#si','<span style="color:$1;">$2</span>',$chaine);
// Bloc des balises [size]-[/size]
$chaine = preg_replace('#\[size=([0-9]{1,2})](.+?)\[/size]#si','<span style="font-size:$1px;">$2</span>',$chaine);
// Bloc des balises [thick]-[/thick]
$chaine = preg_replace('#\[thick=([0-9]{1,3})](.+?)\[/thick]#si','<span style="font-weight:$1px;">$2</span>',$chaine);
// Bloc des balises [style]-[/style]
$chaine = preg_replace('#\[style=(normal|italique|oblique)](.+?)\[/style]#si','<span style="font-style:$1;">$2</span>',$chaine);
// Bloc des balises [weight]-[/weight]
$chaine = preg_replace('#\[weight=(lighter|bold|bolder)](.+?)\[/weight]#si','<span style="font-weight:$1;">$2</span>',$chaine);
// Bloc des balises [decoration]-[/decoration]
$chaine = preg_replace('#\[decoration=(underline|line-through|overline|blink)](.+?)\[/decoration]#si','<span style="font-weight:$1;">$2</span>',$chaine);
// Bloc des balises [font]-[/font]
$chaine = preg_replace('#\[font=(.+?)](.+?)\[/font]#si','<span style="font-family:$1;">$2</span>',$chaine);
// Bloc des balises [list]-[/list]
$chaine = preg_replace('`\[list=(circle|disc|square|i)](.+?)\[/list]`si','<ul type="$1">$2</ul>',$chaine);
$chaine = preg_replace('`\[list](.+?)\|/list]`si','<ul>$1</ul>',$chaine);
// Bloc des balises [*]
$chaine = preg_replace('`\[\*=(circle|disc|square|i)](.+?)`si','<li type="$1">$2',$chaine);
$chaine = preg_replace('`\[\*](.+?)`si','<li>$1',$chaine);
return $chaine;
}
// /!\ Appel de la fonction : echo forum_code($chaine);
/* IMPORTANT : PENSEZ A METTRE LES STYLES (balises) POUR UNR BONNE MISE EN FORME DE CERTAINES BALISES TELLES QUE LES [div], [QUOTE] ! */
echo forum_code('[code=php]<?php echo 'coucou'; ?>[/code]');
?>
Conclusion
Merci à XwZ du forum PHPDebutant qui m'a aidé à me démeler avec les Expressions Régulières ;o) Liste des balises (+ Explications) : ->[url=x]titre lien[/url] ->[url]adresse_lien[/url] -> [b]texte en gras[/b] -> [i]texte en italique[/i] -> [u]texte souligné[/u] -> [strike]texte barré[/strike] -> [overline]texte surligné[/overline] -> [code]code[/code] -> [code=css]Code CSS[/code] -> [code=php]Script PHP (! en incluant les ouvertures et fermetures !)[/code] ->[quote=me]Citation de vous[/quote] ->[quote=quelqu'un]Citation de quelqu'un[/quote] ->[quote]citation sans auteur / nom[/quote] ->[img=adresse_image]titre de l'image[/quote] ->[img]adresse_image[/img] -> [align]texte soit à gauche, soit au centre, soit à droite, soit justifié[/align] -> [color=x]texte en couleur x[/color] -> [size=x]texte d'une taille x[/size] -> [thick=x]texte d'une epaisseur x[/thick] -> [style]texte soit normal, soit italic, soit oblique[/style] -> [weight]texte soit gras clair, gras, ou gras foncé[/weight] -> [font=x]texte écrit dans la police x[/font] ->[list=(circle|disc|square|i)]list avec des puces en forme de cercle / disque / carrés / chiffres romains[/list] ->[list]texte listé[/list] ->[*]premier élément de la liste [*]2nd élément [*]3ème (.....) (avec les mêmes option que [list][/list]) Pour appeler appeler (utiliser) la fonction, pensez à mettre l'instruction <?php echo forum_code($chaine); ?> (ou <?php echo forum_code($chaine,true); ?> si vous voulez que le code html soit possible)
Historique
- 07 mai 2005 23:13:24 :
- 07 mai 2005 23:47:31 :
- Ajout de 3 balises : [font]-[/font], [size]-[/size], [color]-[/color]
- 08 mai 2005 01:03:30 :
- Correction de plusieurs petits bug :)
- 08 mai 2005 01:09:28 :
- J'ai enlevé les commentaires qui servaient à rien et qui n'expliquaient rien >_<
- 08 mai 2005 15:18:11 :
- ->Ajout de 5 balises
->Correction de certaines balises au standard XHTML.
- 08 mai 2005 15:19:53 :
- Correction d'une faute de frappe :p
- 08 mai 2005 15:48:09 :
- Correction d'un bug au niveau de la balise [img][/img]
- 08 mai 2005 15:50:00 :
- Compatibilité XTML accrue
- 08 mai 2005 16:05:15 :
- Compatibilité XHTML poru les balises [url]-[/url] améliorée
- 08 mai 2005 16:11:18 :
- Correction d'un bug mineur
- 08 mai 2005 17:36:46 :
- Ajout de 2 balise (bon une mais en 2 parties) + Explications des différents codes.
- 08 mai 2005 17:39:08 :
- Plus de clarté dans les differentes explications du fonctionnement du code
- 11 mai 2005 20:37:41 :
- Plus de compatibilité XHTML, et plus de clarté dans les explications.
- 11 mai 2005 21:19:43 :
- Compatibilité XHTLM accrue, et ajout de la balises <style></style> manquante qu'il devait y avoir (vous pouvez modifier les styles)
- 11 mai 2005 21:42:19 :
- Ajout des balises de mises en forme <style> & </style>, et un epu plus d'explication et correction d'un bug mineur.
- 13 mai 2005 11:56:43 :
- Changement dans la balise [align][/align].
- 16 mai 2005 18:50:48 :
- Possibilité de choix entre un html actif ou on, et j'ai enlevé une balise </style> qui ne devait pas être là :)
- 16 mai 2005 23:27:32 :
- Sauts de lignes possibles dans la chaine $chaine. (en attente d'un code peut-etre plus leger)
- 17 mai 2005 20:41:16 :
- Code plus compacte (possibilité d'activer / désactiver HTML)
- 08 juin 2005 09:17:45 :
- Correction d'un bug mineurs à propos de l'activation / desactivation du xhtml.
- 21 juin 2005 19:45:32 :
- Colorisation du code PHP =)
- 21 juin 2005 19:52:48 :
- Ajout de personnalisation du fond de la balise [code=php][/code] + explications sur sa facon de marcher =)
- 21 juin 2005 20:42:50 :
- Modification du nom de la fonction en un nom plus adapté =)
- 22 juillet 2005 13:06:58 :
- Ajout d'une balis permettant l'affichage de CSS et sa colorisation
- 25 janvier 2006 16:48:26 :
- Voilà, corrigé quelques bugs :P
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Besoin d'une source ! [ par el_teignou ]
Voila, je suis une vrai m*** en php, maos je ne decourage pas.dernierement j'ai eu l'idée d'avoir une signature aléatoire pour mon forum. Mon idée ser
Mail en html [ par WaNoU ThE EpSyLoN ]
Bonjour tout le monde,Voilà je rencontre un petit problème avec la fonction mail(). En fait je voudrais envoyer un mail HTML (avec le design
mettre une shoutbox [ par hann184l ]
bonjour a tous en fait c'est pour savoir si il est possible de mettre une shoutbox sur un forum forum actif et si c'est possible comment fa
Convertion html > xhtml [ par JoJo738 ]
Bonjour, Je cherche à recuperer les atributs des balises html, pour les ajouter dans un atribut style=""
PHPBB Login [ par kamail7001 ]
salut tout le monde j'abrege : je suis débutant jai fait un site avec une page daccueil en html (frontpage) avec et je voudrais integrer un forum
Tidy [ par jnbdzjnbdz ]
Bonjour, je travaille au développement d'un clone a Dreamwever sur internet et pour cette raison j'ai besoins d'un correcteur HTML et XHTML bon j'ai c
Problème de remplacement de code html en bbcode [ par ulise31 ]
Bonjour,Alors voilà mon problème je voudrais remplacer des balises <span> comme suivant :<span style="font-weight: bold;">monblablablabla&
expression reguliere : image html vers bbcode [ par Full62 ]
bonjour,je veut utiliser une expression reguliere pour convertir mon code html vers du bbcode mais cela ne fonctionne pas...voici ce que j'ai mis ://
interprétration de la police d'un bbcode en html [ par slashf ]
salut a tous, j'ai pas pu écrire le code pour l'interprétation de la police (bbcode) en html quelqu'un peux m'aidé ? j'ai essayé ça : $t = preg_replac
[Création de forum PHP] Quelqu'un de gentil et connaisseur pour m'aider ? [ par Tidavdu14 ]
Bonjour, Je suis futur webmaster du site "CCS-pompiers" dont j'aurais besoin de vous pour le crée. J'ai 14 ans et je viens de terminée la lecture des
|
Téléchargements
Logiciels à télécharger sur le même thème :
|