REMPLACEMENT BALISES BBCODE

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 16 mars 2005 à 13:10
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 - 2 mai 2007 à 17:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30134-remplacement-balises-bbcode

Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
2 mai 2007 à 17:27
Ca c'est pas bête !
D'utiliser cette fonction juste avant de stocker le tout dans une base SQL par exemple.
Ensuite ben si vous voulez qu'on puisse modifier à nouveau le texte, il faudrait créer la fonction inverse pour faire un "edit" du texte.

Ca peut paraitre lourd, mais je pense que ca sera tout de même bien moins lourd que de rappeler cette fonction pour chaque texte.

A méditer :)

@+
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
1 mai 2007 à 01:08
Je pense pas que le $t souffre trop ;)
En revanche, chainer ainsi les preg_* c'est pas forcément très efficace pour traiter un gros fichier.
Je vous conseille, si vous avez peur de trop faire souffrir votre distrib PHP, de se servir de cette fonction juste une fois pour transformer la chaine, et de stocker la chaine transformée...

Cheers
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
1 mai 2007 à 00:37
Salut tout le monde,

J'avais crée ce style là en utilisant plein de preg_replace, mais je trouve que c'est lourd mais que c'est lourd...
J'avoue j'ai pas cherché à crée mieux depuis car je n'en ai plus eu l'utilité et je n'y connaissais pas grand chose à l'époque.

Mais sérieusement y'a pas "un truc" pour simplifier ca ?
Faire cela, devient très vite lourd pour la page, ca se verra peut-être pas à vu d'oeil, mais bon on prend "t" on lui attribue une nouvelle chaine en remplaçant ceci par cela, PUIS on reprend le nouveau "t",et on recommence, etc.
Perso je trouve qu'a la fin ben le "t"...il à souffert le pauvre, vous croyez pas ?
kegi Messages postés 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 août 2008
8 août 2006 à 02:29
un grand merci pour ce bout de script assez utile ;)

Cordialement,
Kevin (kegi@hotmail.com)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
6 juin 2006 à 14:48
** : un include DU fichier ou est stocké la fonction. (pardon pour le double post)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
6 juin 2006 à 14:46
@ HenvimaL : Tu as du mettre un "include" dans le fichier où est stocké la fonction. Ce fichier est ré-inclus à chaque fois, et php voit que tu essaies de RE-définir la fonction, donc il aime pas. Soluce : tu remplaces par un "include_once", ou mieux, tu sors l'include de ton "while", tu le fais avant, une seule fois, et ca marchera nickel : la fonction sera bien déclarée une seule fois et ca devrait mieux marcher.
A noter que tu peux aussi enregistrer tout ton texte, puis appeler bbtags() sur tout le texte une seule fois.

@ OyyoDams : yep, merci pour le commentaire, en fait les quotes imbriqués doivent fonctionner pour peu qu'ils soient dans le même ordre que le code a priori :/ (avec auteur, sans auteur) Je n'ai pas vraiment le coeur à corriger ca, si ta soluce fonctionne c'est nickel ;)
HenvimaL Messages postés 28 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 7 juin 2010
5 juin 2006 à 21:05
Salut j'ai un gros souci !!!! lol jviens enfin de comprendre pk ca déconnait.

J'ai plusieurs lignes avec des textes en bbcode enregistré dans une table MYSQL. J'affiche chake ligne de texte en faisant un WHILE ca permet de les faire défiler. Et bref pour convertir mon bbcode en HTML j'inclu dans le WHILE la fonction BBtags. Il l'accepte pas au bout du 2eme texte affiché en gros il aime pas répéter la fonction BBtags plus de 2 fois.

Fatal error: Cannot redeclare bbtags() (previously declared in c:\easyphp\www\ibdm\replace.php:4) in c:\easyphp\www\ibdm\replace.php on line 4

Quelqu'un peut m'aider cimer ...
OyyoDams Messages postés 1 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 09:50
Très bien ce code. Par contre pour la gestion des [quotes] imbriqués, il faut l'appeler plusieurs fois. Voici un exemple de solution:
do
{
$previousmsg=$msg;
$msg=BBtags($msg);
} while ($previousmsg!=$msg);
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
20 oct. 2005 à 13:56
$t = preg_replace('!\[center\](.*)\/center\!','
' . $1 . '
',$t);

Au début, ca ca doit fonctionner. Enjoy :)
groniar Messages postés 1 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 20 octobre 2005
20 oct. 2005 à 13:44
salutation , merci pour cette petite source , mais j'ai un probleme lorsuqe je tente d'inseré la balise [center]

comment dois je m'y prendre stp ?
merci
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
5 mai 2005 à 14:27
tout d'abord merci pada pour tout ca, j'ai deux trois truc a rajouter :
un
$a = stripslashes($a);
avant le
echo " $a

";
permet de pas avoir les "l\'url"
apres j'aurais mis pour [size] :
$t = preg_replace("!\[size=([^\]]+)\]!mi","",$t);
plutot que d'utiliser le style en px (car si quelqu'un vous post un [size=1000] ca ruine la page)
enfin pour delirer j'ai fait une autre balise que j'avez vu sur un forum et qui m'avait plue :
//[yayou]
$t = preg_replace("/(\[yayou\])(.*?)(\[\/yayou\])/i", ", ----
\\2, ----

", $t);

on adapte soi meme ses images, un exemple sur http://pagesperso.laposte.net/profil/balises.php (ca restera pas longtemps) a tester avec [yayou]votre message/yayou .

Voila =) merci encore pour tout ca (;
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 mars 2005 à 18:34
Voilà, faut vérifier que çe soit bon, et là ça prend du temps, contrairement aux regexs :-)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mars 2005 à 18:10
le str_replace() ne touchera pas une balise [url = ...]. Pas de soucis de ce cote la. Pour ca il faut ensuite une regex. Mais il ne bousillera rien puisqu'il n'y touchera pas. Dans ton tableau st_replace tu auras [url], et non pas [url
?
Et evidemment il faut verifier que le code soit bon avant...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 mars 2005 à 17:58
Non, pas de str_replace, si tu ne fermes pas la balise essaie avec un str_replace, bonjour le code html après, sans compter le défaçage du site...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mars 2005 à 17:46
A moi aussi il parait un peu complique lol...et il subsiste encore quelques bugs malheureusement, je viens de voir ca :-( Mais je vais debugger ca tranquille!

Pour les tableaux : ben oui, et puis c'est pas tres complique a utiliser, dans ton cas.
A mon avis tu peux meme limiter encore le temps d'execution :
toutes les balises simples ([url],[code]...) que j'oppose aux balises plus complexes ([url = ...]), tu peux utiliser str_replace() (avec 2 tableaux), c'est plus rapide. Et reserver ensuite un preg_replace() (avec tableau encore lol) pour les tags restants. [url =...] ne sera pas touche par str_replace() puisqu'il ne prendra en compte que [url].
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
18 mars 2005 à 17:40
exactly ;) ton code m'a paru compliqué j'avoue, pour les tableaux je vais voir ca, ca sera certainement plus joli (j'm'en suis un peu servi avec des array_map sur ma source d'après, j'découvre héhé ^^)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mars 2005 à 16:24
D'ou pub pour mon script lol :
http://www.phpcs.com/code.aspx?ID=30110
qui se charge lui de verifier qu'un texte contenant du bbcode soit bien forme.

Au passage, PaDa, pourquoi n'utilises tu pas un tableau de motifs ? preg_replace() les accepte (tout comme str_replace).
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
17 mars 2005 à 21:01
qui se chevauchent ? aucun pb de parsing a priori si le texte d'entrée est valide... je peux me tromper, fournis un exemple ;) (selon les spécifications sur pbpbb.com, c'est pas au module de remplacement a vérifier la validité de l'entrée, c'est a l'auteur de l'entrée :))
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
17 mars 2005 à 20:36
Et pour les balises qui se chevauches????
Il va y avoir un pitit problème non?
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
16 mars 2005 à 18:08
ok j'attends de voir ca avec impatience =]
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 mars 2005 à 14:40
Bah je l'ai faite moi-même ma fonction qui colorie le code, bon pour php t'as la fonction highlight_string pour une chaîne, mais bon je me suis fait un petit code qui colorie le JS, HTML, PHP, C++ et VB
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
16 mars 2005 à 13:24
anthomicro, si cest pour colorier du code, jen ai trouvé une bien ;)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 mars 2005 à 13:10
Salut :-)

Justement je me suis réalisé une petite fonction de colorisation syntaxique perso pour la V3 de mon site, je verrai pour la poster quand elle sera aboutie :-)

a ++
Rejoignez-nous