Fonction bbcode, compatible w3c

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 649 fois - Téléchargée 16 fois

Contenu du snippet

Après de très nombreuses recherches sur le et je n'ai jamais réussi a trouver une fonction qui interprète le bbcode de façon correcte. j'en ai donc récupérée plusieurs, puis je les ai mixés et enfin j'ai retouché la fonction ainsi obtenue pour arriver à cette fonction.En plus d'interpréter le bbcode, elle génère du code xhtml conforme au w3c.
on doit encore pouvoir l'améliorer, c'est pourquoi je vous invite a me faire parvenir vos idées d'amélioration et tout autre commentaires.

réécriture de la fonction le 12/4/2011

Source / Exemple :

<?php
//fonction d'interprétation bbcode, dernière modif 12/04/2011


function BBtags($t) {

$entree = array(
        '#[b](.*)[/b]#Usi',
        '#[i](.*)[/i]#Usi',
        '#[u](.*)[/u]#Usi',
        '#[s](.*)[/s]#Usi',
  '#[quote](.*)[/quote]#Usi',
  '#[code](.*)[/code]#Usi',
        '#[img](.*)[/img]#Usi',
        '#[url](.*)[/url]#Usi',
  '#[email](.*)[/email]#Usi',
        '#[url=(.*)](.*)[/url]#Usi',
  '#[email=(.*)](.*)[/email]#Usi',
        '#[left](.*)[/left]#Usi',
        '#[center](.*)[/center]#Usi',
  '#[justify](.*)[/justify]#Usi',
        '#[right](.*)[/right]#Usi',
  '![list](.+)[/list]!Umi',
  '![*](.+)(?=([*]|</ul>))!Umi',  
  '#[color=(.*)](.*)[/color]#Usi',
  '#[size=(.*)](.*)[/size]#Usi',
  '#[br]#Usi',
  '#[hr]#Usi'
  
    );
$sortie = array(    
        '<strong>$1</strong>',
        '<span style="font-style: italic;">$1</span>',
        '<span style="text-decoration:underline;">$1</span>',
        '<span style="text-decoration:line-through;">$1</span>',
  '<cite>$1</cite>',
  '<pre>$1</pre>',
        '<img src="$1" alt="Image" />',
        '<a href="$1">$1</a>',
  '<a href="mailto:$1" >$1</a>',
        '<a href="$1">$2</a>',
  '<a href="mailto:$1" >$2</a>',
        '<div style="text-align:left;">$1</div>',
        '<div style="text-align:center;">$1</div>',
  '<div style="text-align:justify;">$1</div>',
        '<div style="text-align:right;">$1</div>',
  '<ul> $1 </ul>',
  '<li>$1</li>',  
  '<span style="color: $1;">$2</span>',
  '<span style="font-size: $1;">$2</span>',
  '<br />',
  '<hr />'
    );
    $count = count($entree)-1;
    for($i=0;$i<=$count;$i++)
    {
        $t = preg_replace($entree[$i],$sortie[$i],$t);
    }

  //retour
 return $t;
}
?>

A voir également

Ajouter un commentaire

Commentaires

fred6184
Messages postés
12
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
16 mai 2017

oui je sais que le rendu est le même (en tout cas sous firefox et sous ie), pis tu m'a converti je vais mettre des strong a la place..

au niveau de mon savoir j'estime avoir pas mal de notions que j'ai acquises ici et la sur le web. il est certain que tu en a plus que moi a en juger ton profil car tu fait de l'informatique ton métier et moi un simple loisir ( mon domaine c'est les medocs).. je m'incline donc.
Palleas_44
Messages postés
130
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009

Tu n'as pas l'air de savoir de quoi tu parles !

Fais moi plaisir, tu vas tester un b, un strong et un span avec un font-weight:bold; tu verras que le rendu est le même : un texte en gras !
fred6184
Messages postés
12
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
16 mai 2017

et que son père bill gates créa une grosse merde appelé Internet explorer ;-)
Palleas_44
Messages postés
130
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009

> bah selon moi le plus dur lorsqu'on fait un site c'est d'avoir toujours le même rendu

C'est alors que dieu inventa la CSS !
fred6184
Messages postés
12
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
16 mai 2017

bah selon moi le plus dur lorsqu'on fait un site c'est d'avoir toujours le même rendu... si j'ai décidé d'afficher un code en gras , je veux qu'il apparaisse en gras tout le temps.

mais je comprend votre point de vue

pour ceux qui veulent mettre strong a la place de mes span pas de soucis..

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.