Citation de message dans un forum
Hors ligneOxyde Le 21/07/2006 à 17:42 Profil de Oxyde Configuration de Oxyde

Bonjour à tous,
j'ai créée un petit forum simpa à la main mais je me heurte à un problème tout bête pour que mes membres puissent citer le message d'un autre membre. Quand un utilisateur clique sur le bouton citer d'un message, ce message s'écrit comme-ci (je n'ai pas mis de crochet ([ ]) pour mes balises quote car sinon ce forum même les prends pour des balises de citations quel chance ) :

{QUOTE="Oxyde"}Le message que contient le post !{/QUOTE}

et j'aimerai que le message s'écrit comme cela à l'affichage :

<B>Oxyde à écrit :</B><BR>
<DIV CLASS="Citer">Le message que contient le post !</DIV>

et aussi faire une autre version sans mention de la personne qui est cité :

{QUOTE}Le message que contient le post !{/QUOTE}

A l'affichage :

<DIV CLASS="Citer">Le message que contient le post !</DIV>

J'ai essayé avec les expressions régulieres (eregi_replace entre autres) mais j'ai pas mal desesperé si quelqu'un pouvait m'aider se serait tres simpa de sa part.

Merci d'avance !
Hors ligneAnthony Le 22/07/2006 à 01:07 Profil de Anthony Configuration de Anthony

Admin
Salut,

pour éviter le problème sur mon forum tu coches "désactiver le BBCODE" et hop miracle, ça n'est plus interprété ^^

Sinon pour les expressions régulières, un exemple basique :

<?php
$texte
=preg_replace('`[quote=(.+?)](.+?)[/quote]`sim','<strong>$1 a écrit :</strong><br /><div class="citer">$2</div>',$texte);
?>
--

Hors ligneOxyde Le 22/07/2006 à 01:16 Profil de Oxyde Configuration de Oxyde

Arf j'ai déjà essayé sa sa m'affiche n'importe quoi :

[U a écrit :
E] [ a écrit :
O a écrit :
]Bi a écrit :
nvn a écrit :
à a écrit :
us ^^[ a écrit :
U a écrit :
E] a écrit :
s a écrit :
[/U a écrit :
E] C a écrit :
ol

Avec une <DIV CLASS="Citer"></DIV> entre chaque ligne :'(
Hors ligneAnthony Le 22/07/2006 à 01:18 Profil de Anthony Configuration de Anthony

Admin
Et pour arriver à ce résultat tu rentres quoi comme message en style bbcode ?
--

Hors ligneOxyde Le 22/07/2006 à 01:20 Profil de Oxyde Configuration de Oxyde

Seulement sa :

[QUOTE]
[QUOTE]Bienvenue à Tous ^^[/QUOTE]
test

[/QUOTE]

Cool


Mais meme quand il n'y a pas c'est [QUOTE] sa me fait sa sur tout le forum c'est sa le problème.
Hors ligneAnthony Le 22/07/2006 à 10:28 Profil de Anthony Configuration de Anthony

Admin
oui ça gère pas les citations imbriquées ce système, pour ça faut utiliser preg_match_all() (couplé à l'expression régulière que je viens de te passer).

Oxyde a écrit :
Mais meme quand il n'y a pas c'est [QUOTE] sa me fait sa sur tout le forum c'est sa le problème.


Ta phrase ne veut absolument rien dire.
--

Hors ligneOxyde Le 23/07/2006 à 02:44 Profil de Oxyde Configuration de Oxyde

EUREKA !
Enfaite c'est tout simple au lieu de tout traiter en même temps le début et la fin de citation il suffit de traiter un par un, je vous donne la version simple qui marche parfaitement même avec les citations imbriqués :

$content = eregi_replace('\[QUOTE\]','<DIV CLASS="Citer">',$content);
$content = eregi_replace('\[QUOTE="([[:alnum:]]+)"\]','<B>\\1 a écrit :</B><DIV CLASS="Citer">',$content);
$content = eregi_replace('\[/QUOTE\]','</DIV>',$content);

Voila je crois que l'on peut pas faire plus simple merci a toi Anthony pour ton aide.

Pour comprendre ma phrase précedente remplace le premier "c'est" par "ces" petits chipoteux ;p
@+
Hors ligneAnthony Le 23/07/2006 à 08:33 Profil de Anthony Configuration de Anthony

Admin
Le problème de ce code (qui peut être aisément remplacé par un str_replace() bien plus rapide) est que si je tape

[quote]

ou encore [/quote] n'importe où, t'auras une déformation de mise en page. Y'a donc une faille avec ton système.
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels