Comment faire pour faire des post comme dans phpBB ?

[Résolu]
Signaler
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008
-
Messages postés
1
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
8 mars 2005
-
Bonjour à tous,

J'aimerais savoir si un script existe pour faire des post à la manière de phpBB. C'est-à-dire que quand je veux citer, je mets
, quand je veux mettre le texte en gras, je mets , etc...

Merci :)

++

8 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut :-)

Il s'agit de bbcode. Voici ce que j'utilise pour mon site :

$textecommentaire= preg_replace('`\[img\](.+?)\/img\`sim','',$textecommentaire);
$textecommentaire=preg_replace('`\[smile\]smile([0-9]*).gif\/smile\`sim','',$textecommentaire);
$textecommentaire=preg_replace('`\[b\](.+?)\/b\`sim',' $1 ',$textecommentaire);
$textecommentaire =preg_replace('`\[i\](.+?)\/i\`sim',' $1 ',$textecommentaire);
$textecommentaire =preg_replace('`\[s\](.+?)\/s\`sim','$1',$textecommentaire);
$textecommentaire=preg_replace('`\[ba\](.+?)\/ba\`sim','<strike>$1</strike>',$textecommentaire);
$textecommentaire=preg_replace('`\[url=(.*?)\](.*?)\/url\`sim','[$1 $2]',$textecommentaire);
$textecommentaire=preg_replace('`\[mail=(.*?)\](.*?)\/mail\`sim','[mailto:$1 $2]',$textecommentaire);

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Bonsoir,

Les balises dont tu parle, porte le nom de BBCode.

Il existe plusieurs sources sur phpcs, traitant d'elles, mais evidament si tu ne connais pas le nom, tu risque de les trouvés dans un packer de temps...
Donc pour toi j'ai selectioner un module bbcode, qui ma apparut être le plus interessent :

<?
function bbcode($text) { 
    $text =   preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<"]*?)\/img\#sie", "''", $text); 
    $text = preg_replace("#\[url\]((ht|f)tp://)([^\r\n\t<"]*?)\/url\#sie", "'\\1\\3'", $text); 
    $text = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/", "$2", $text); 

    $text = preg_replace("/\[b\](.+?)\[\/b\]/", " $1 ", $text); 
    $text  = preg_replace("/\[i\](.+?)\[\/i\]/", " $1 ", $text); 
    $text  =  preg_replace("/\[u\](.+?)\[\/u\]/", "$1", $text); 
    $text = preg_replace("/\[code\](.+?)\[\/code\]/", " Code :  |----
<code>$1
", $text);
$text = preg_replace("/\[quote\](.+?)\[\/quote\]/", "<table width= 100%>----
citation : |----, $1</td>
", $text);
$text = preg_replace("/\[quote= (.+?)\](.+?)\[\/quote\]/", " $1 : |----
$2
", $text);
$text = preg_replace("/\[color=(.+?)\](.+?)\[\/color\]/", "$2", $text);

return $text;
}

// tu fait rentrer ton formatage de donnée, ce cette façon :
$umessage = $_POST["message"]; // 'message' étant probablement une textarea, issu du formulaire precedent
$umessage = str_replace("<","<","$umessage");
$umessage = str_replace(">",">","$umessage"); // je prefere utiliser ce genre de formatage basique, pour virer les balises < & >, d'autres veront ceci comme incoerent, mais je sais pourqoui je sais ça.
$umessageformater = bbcode($umessage);
// $umessageformater contien du html!
....
?>
</td></tr></table>
Le mieu étant de faire le formatage lors de l'affichage, mais tu sera contrain à plus de ralentisement!
Le plus rapide est de le faire comme dans cette exemple, le faire lorsqu'on fait une réponse à un sujet!

http://www.phpcs.com/code.aspx?ID=17638
Merci à BlackWizzard pour cette source!

++
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Au vraiment desoler, je suis exesivement lent lorsque je repont à qouique se soit!
Anthomicro à tout à fait raison!
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008

Merci beauboup ! C'est super sympa ! Je vais étudier le truc, et t'inquétes pas juki_webmaster, moi aussi je réponds lentement ! ;)

++
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Enfin une personnes qui me comprend ;)
Sa me prend 4 fois plus de temps, enfaite je voit pas le temps passer et à la fin de la journé, c'est la crise, j'ai rien fait!
Content qu'on ait put te mettre sur le route ;)
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008

Loooooooooool ! mdr ! j'allais dire la même chose !
C'est trop horrible quand on voit qu'à la fin de la journée on a rien fait :)

Merci encore,

++

www.graphicmotion.tk : tutoriels pour photoshop, flash, et php/MySQL, ainsi que beaucoup d'autres choses !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Pour ce qui est des exprssions régulières concernant les balises gras [b] etc... je te conseille de prendre ma solution qui inclue le sim à la fin (qui permet de ne pas prendre en compte les sauts de lignes et d'être iinsensible à la casse), ça t'évitera des problèmes possibles avec l'autre solution :-)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
1
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
8 mars 2005

Bonjour tout le
monde! Merci pour les codes donnés, ils me servent bien, cependant, sur
le forum que je suis en train de mettre en place, je voudrais qu'il y
ait la possibilité de citer des messages contenant des citations.



En utilisant le code du dessus :



$message
preg_replace("/\[QUOTE(.+?)\](.+?)\[\/QUOTE\]/", "QUOTE ($1)
:, ----
$2

",
$message);



Seulement, si on a un message de ce genre :

[QUOTE=machin][QUOTE=moi]message cité1/QUOTEautre message cité/QUOTE

message reprenant les deux autres.



Lors de l'affichage j'aurai quelque chose comme ça :

QUOTE (machin)


message cité1

autre message cité/QUOTE




message reprenant les deux autres.



Alors que j'aurais voulu avoir plutôt ça :


QUOTE (machin)



QUOTE (moi)



message cité1



autre message cité




message reprenant les deux autres.





J'espère avoir été suffisamment claire dans ma demande

Et si quelqu'un avait une solution, ça m'aiderait vraiment beaucoup



@++ Mystic