Oxyde |
Le 21/07/2006 à 17:42 |
|
|
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 ! |
Anthony |
Le 22/07/2006 à 01:07 |
|
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);
?>
-- |
Oxyde |
Le 22/07/2006 à 01:16 |
|
|
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 :'( |
Anthony |
Le 22/07/2006 à 01:18 |
|
Admin |
Et pour arriver à ce résultat tu rentres quoi comme message en style bbcode ? -- |
Oxyde |
Le 22/07/2006 à 01:20 |
|
|
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. |
Anthony |
Le 22/07/2006 à 10:28 |
|
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. -- |
Oxyde |
Le 23/07/2006 à 02:44 |
|
|
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
@+ |
Anthony |
Le 23/07/2006 à 08:33 |
|
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. -- |