IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Parser du BBcode imbriqué


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut Parser du BBcode imbriqué
    Bonjour,

    J'essaye de réaliser un éditeur de texte mais je bloque sur les balises imbriquées. J'ai bien vu quelques solutions sur des forums mais tous traitent uniquement la balise citation. Ors, ce que je voudrais, c'est un code réutilisable pour toutes les balises imbriquées...
    Mar exemple, prenons le code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [taille valeur="grand"]Ceci montre [taille valeur="petit"]bien[/taille] le problème[/taille]
    actuellement, donne ceci
    Ceci montre [taille valeur="small"]bien le problème[/taille]

    Je voudrais qu'à la sortie, tout le texte soit en grand sauf le mot "bien" qui sera en petit. Mais je voudrais également que le code fonctionne aussi avec la balise couleur, citation, etc.

    Pouvez-vous m'aider ?

    Voici mon code actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public function parse($content) {
    	return $this->clean($content);
    }
    private function clean($content) {
    	$vdcode = array(
    		'#\[gras](.+)\[/gras]#isU',
    		'#\[italique](.+)\[/italique]#isU',
    		'#\[souligne](.+)\[/souligne]#isU',
    		'#\[barre](.+)\[/barre]#isU',
    		'#\[surligne](.+)\[/surligne]#isU',
    		'#\[exp](.+)\[/exp]#isU',
    		'#\[ind](.+)\[/ind]#isU',
    		'#\[gauche](.+)\[/gauche]#isU',
    		'#\[centrer](.+)\[/centrer]#isU',
    		'#\[justifie](.+)\[/justifie]#isU',
    		'#\[droite](.+)\[/droite]#isU',
    		'#\[lnombre](.+)\[/lnombre]#isU',
    		'#\[lpuce](.+)\[/lpuce]#isU',
    		'#\[li](.+)\[/li]#isU',
    		'#\[T1](.+)\[/T1]#isU',
    		'#\[T2](.+)\[/T2]#isU',
    		'#\[T3](.+)\[/T3]#isU',
    		'#\[T4](.+)\[/T4]#isU',
    		'#\[tableau](.+)\[/tableau]#isU',
    		'#\[ligne](.+)\[/ligne]#isU',
    		'#\[cel](.+)\[/cel]#isU',
    		'#\[lien url="(.+)"](.+)\[/lien]#isU',
    		'#\[image legende="(.+)"](.+)\[/image]#isU',
    		'#\[citation auteur="(.+)"](.+)\[/citation]#isU',
    		'#\[couleur nom="(.+)"](.+)\[/couleur]#isU',
    		'#\[background couleur="(.+)"](.+)\[/background]#isU',
    		'#\[taille valeur="(.+)"](.+)\[/taille]#isU',
    		'#\[bordure type="(.+)"](.+)\[/bordure]#isU'
    	);
    	$tags = array(
    		'<strong>$1</strong>',
    		'<em>$1</em>',
    		'<span class="underline">$1</span>',
    		'<span class="linethrough">$1</span>',
    		'<span class="overline">$1</span>',
    		'<sup>$1</sup>',
    		'<sub>$1</sub>',
    		'</p><p class="left">$1</p><p>',
    		'</p><p class="center">$1</p><p>',
    		'</p><p class="justify">$1</p><p>',
    		'</p><p class="right">$1</p><p>',
    		'</p><ol>$1</ol><p>',
    		'</p><ul>$1</ul><p>',
    		'<li>$1</li>',
    		'</p><h1>$1</h1><p>',
    		'</p><h1>$1</h2><p>',
    		'</p><h1>$1</h3><p>',
    		'</p><h1>$1</h4><p>',
    		'</p><div class="usertable"><table>$1</table></div><p>',
    		'<tr>$1</tr>',
    		'<td>$1</td>',
    		'<a href="$1">$2</a>',
    		'<img src="$2" alt="$1" />',
    		'</p><blockquote cite="$1">$2</blockquote><p>',
    		'<span class="$1">$2</span>',
    		'<span class="$1">$2</span>',
    		'<span class="$1">$2</span>',
    		'<span class="$1">$2</span>'
    	);
    	$content = htmlentities($content, ENT_QUOTES, 'iso-8859-15');
    	$content = preg_replace($vdcode, $tags, $content);
    	return $content;
    }
    D'avanc eun grand merci !

  2. #2
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    bonjour,
    tu peux essayer en remplaçant des balises une à une et non par paire.
    ex :
    Code bbcode : Sélectionner tout - Visualiser dans une fenêtre à part
    [taille valeur="grand"]Ceci montre [taille valeur="petit"]bien[/taille] le problème[/taille]

    tu commences par remplacer tous les [taille=XXX] par <span class=XXX> puis en 2e passage, tu remplaces tous les [/taille] par </span>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    J'y avais pensé mais je ne pense pas que ce soit une bonne idée. Imagine que l'utilisateur (et ça arriveras) fasse une erreur. Par exemple, il oublie un 'l' à taille. BOUM, c'est tout le système qui s'écroule

    Personnellement, je recherche quelque chose de plus solide que ça.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    OK ! J'ai trouvé ce dont j'avais besoin : un parser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] conversion BBCODE a HTML avec balises imbriquées
    Par Dr.Wily dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2013, 20h33
  2. [RegEx] Remplacement BBCode imbriquées
    Par Torgar dans le forum Langage
    Réponses: 2
    Dernier message: 07/07/2012, 18h28
  3. Réponses: 10
    Dernier message: 20/10/2011, 13h01
  4. [RegEx] Un bbcode maison - faire des listes imbriquées
    Par Fido166 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2008, 14h19
  5. [Système] bbcode imbriqué qui ne marche pas
    Par jexl dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2007, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo