Voir la version complète : Générateur de vBcode en PHP
Bonjour, voilà suis un tit nouvo, mais je n'utilise pas Vbulletin en sois....
c'est juste que je fais un script en dehors et qui génère du code vb entre autres.
Voilà, pour une prévisualisation du code Vb, j'aurais aimé savoir si vous aviez le code qui génère le code html à partir du code vb, et si oui si je pouvais l'avoir svp.
En fait je sais que c'est pas monstrueux à faire, mais il doit y avoir des subtilités, alors autant être conforme au code vb officiel ^^
Qu'est ce que tu appelles du "code vb " ?!
Euh, te filer "le code qui genere le code html a partir du code vb" (oula que c'est confus ce que tu nous dis la), bah bon courage pour tout isoler, entre l'appel des templates, leur affichage, les fonctions qui parsent les bbcodes et tout tout tout le reste ...
Enfin bref, je suis pas bien sur d'avoir compris ce que tu voulais exactement ...
lol j'espère qu'il faut pas de templates, ça me ferais peur !?!
Bon, le code VB, c'est à dire les trucs entre les crochets dans le texte des forums vbulletins et autres sont interprétés en html pour que le navigateur puisse afficher par exemple le texte en gras entre des balises <b>...</b> alors que dans le thread on utilisait [ B ] ... [ /B ]....
bref, le code vb est interprété en html..... vous comprenez ?
Donc il me faudrait le code officiel qui "parse" les bbcodes. C bon ?
eu c'est preg_replace utilisé :). Malheureusement nous ne pouvons pas te donner la source pour le parsing, elle n'est pas libre de droit et faut posséder la licence pour y accéder.
lol euh oui je connais les fonctions ^^
euh comment ça elle est pas libre ? mais de toutes façon en la téléchargeant je l'aurai nan ??? C pas GNU ? Sinon je met un tit lien vers le site officiel :p
Bah je crois que je vais devoir composer.... :(
Pitchoune
01/04/2004, 19h46
vBulletin n'a jamais été GNU :)
lol.... bon ben vous faites office de solitaires dans le php :p
je vais essayer de m'arranger mais c dommage :(
xcheater2
04/04/2004, 01h48
le principe est tres simple, le vbcode est transféré dans une variable php, les codes [ u] sont donc remplacé dans le php par un preg replace ou autre selon sont utilisation en code html. Cette variable php modifié est affiché dans une template et surtout ne pas utiliser echo pour l'afficher.
"Cette variable php modifié est affiché dans une template et surtout ne pas utiliser echo pour l'afficher."... euh echo marche très bien... je vois aps pkon pourrait pas l'utiliser...
Bon j'ai réussis une grosse partie.... mais en fait le plus chiant ce sont des trucs propres à Vbulletin que j'aurais aimé connaitre... et pas à aller tester et chercher dans le code html finis, comme par exemple les paramèetres du Glow, etc.... bref tout ce qui est propre à Vbulletin....
Au passage, puisque Vbulletin n'est pas GNU, moi je vous publie ma petite source, pas tout à fait complèete pour certaines balises, qui montre au passage que echo va très bien....
$preg_entree = array(
"'\[b\]'i",
"'\[/b\]'i",
"'\[i\]'i",
"'\[/i\]'i",
"'\[u\]'i",
"'\[/u\]'i",
"'\[FONT=([^\]]+)\]'i",
"'\[/FONT\]'i",
"'\[SIZE=([^\]]+)\]'i",
"'\[/SIZE\]'i",
"'\[COLOR=([^\]]+)\]'i",
"'\[/COLOR\]'i",
"''i", //NFO
"''i", // GLOW
"''i", // MARQUEE
"'\[ALIGN=([^\]]+)\]'i",
"'\[/ALIGN\]'i",
"'\[c\]'i",
"'\[/c\]'i",
"'\[URL=([^\]]+)\]([^\]]+)\[/URL\]'i",
"'\[IMG\]([^\]]+)\[/IMG\]'i",
"'\[EMAIL\]([^\]]+)\[/EMAIL\]'i",
"''i", //QUOTE
"''i", //CODE
"'[\r|\n]#([^\r\n]*)[\r|\n]'i",
"'\[LIST\]'i",
"'\[/LIST\]'i",
"''i", //****
"'\n'i"
);
$preg_sortie = array(
'<B>',
'</B>',
'<I>',
'</I>',
'<U>',
'</U>',
'<font face="\\1">',
'</font>',
'<font size="\\1">',
'</font>',
'<font color="\\1">',
'</font>',
'', // NFO
'', // GLOW
'', // MARQUEE
'<p align="\\1">',
'</p>',
'<center>',
'</center>',
'<a href="\\1" target="_blank">\\2</a>',
'<img src="\\1" />',
'<a href="mailto:\\1">\\1</a>',
'', //QUOTE
'', //CODE
'<LI>\\1</LI>',
'<ul>',
'</ul>',
"", //****
"<br />\r\n"
);
$content_sortie = preg_replace($preg_entree, $preg_sortie, $content_entree);
echo "<font face='verdana' size='2'>".$content_sortie."</font>";
:eek: tiens la chatonne est pas passée pour sortir ces griffes
bizarre :chut:
en bref tu veux toutees les infos de vB sans payer la licence c bien ça?
je crois que tu n'es pas au bon endroit du tout !!!
comme il est ecrit 2 fois dans ce post ce n'est pas libre de droit !
Foularou
08/04/2004, 12h10
je comprend pas comment tu fait l'appel. Pour le remplacement des vars
ben $content_entree contient le contenu du code à preview qui est "recodé" avec deux tableaux et qui donne $content_sortie c tout.......
dsl je savais pas que VBulletin était payant... trouve ça dommage.... ça gâche l'esprit de l'open source si connu du php.... fallait faire de l'asp alors.... ;)
xcheater2
12/04/2004, 23h11
j'aurais plutot mis les code d'appel dans la db.
ex: entre crochet pour email
et aussi de mettre un petit mot pour dire a quel endroit le texte est rentré pour ne pas modifier toute la partie du texte
tu verra que par la suite, ca sera bien mieu pour faire plein de chose.
pour ce qui est du remplacement et bien suffit d'aller voir :
code de remplacement (http://www.nexen.net/docs/php/annotee/function.preg-match-all.php)
et de le mettre dans une boucle tel que while
xcheater2
12/04/2004, 23h23
je comprend pas comment tu fait l'appel. Pour le remplacement des vars
il fait l'entré sous forme de variable pour le remplacement
ex:
$preg_entree[5] et je suppose qu'il utilise une boucle
le principe est bon mais comme je vien de le dire, il ferrait mieu de le mettre dans la db mais pas pas exactement tout en bloc comme il a mis.
Foularou
13/04/2004, 08h42
merci xcheater pour la reponse testerai ca plus tard.
Euh nan mon truc consistait pas à faire une boucle.
Le gars fait un 'pré-post' et là il peut faire une preview de son post avec ce bout de code.....
J'ai pas tout compris xcheater, je vois pas trop de diférrence, hormis l'utilisation de preg_match_all au lieu de preg_replace pour mon cas. On accuse tjrs un peu plus de la lenteur de while par rapport aux fonctions spécifiques.
De plus j'utilise ça après génération d'un formulaire, donc nul besoin de base de donnée.... le script est presque totalement indépendant de sa base, en fait je pense pas que ça soit très utile ici étant donné le petit nombre de balises, on perdrais p e plus de temps à aller chercher la table...
xcheater2
19/04/2004, 22h38
sur vbulletin, ils mettent ceci dans la db ormis le code [*code] ou [*quote], [*php], et un 3 ieme dont je ne me souvient plus qui est dans la db (en tout cas dans la version 2 car la 3 je ne me suis pas attardé dessus)
ce qui permet avec le meme code de faire des codes personnalisé.
le preg ... all est fait surtout quand tu as plusieur (ex:[*quote] a faire dans le mesage).
par contre, si tu n'as pas fait de boucle comment tu vérifie la totalité de ton tableau $preg_entree ?
voir
Pitchoune
19/04/2004, 23h17
Les balises [*b], [*i] et [*u] sont hard-codés aussi.
xcheater2: look http://fr2.php.net/manual/fr/function.preg-replace.php, tu verras que dnas les exemple preg_replace n'a pas besoin de while ou autre.... c un des avantages par rapport à replace() je crois
Hard-codés vous entendez quoi par là ?
xcheater2
20/04/2004, 22h30
il veut entendre par les fichiers php car dans les fichiers php sont les code qui n'ont pas besoin d'etre changé comme italique, gras, ect... mais tu en as qui serait bien de les mettre en db comme align, [URL=([^\]]+)\]([^\]]+)\[/URL\], et d'autre a priori que tu veu mettre comme le maquee et le glow et ceci se mettent dans une db généré par un script. ce qui permet de pouvoir generer d'autres codes sans toucher aux fichiers php. Mais vu q'un jour ou l'autre, on fini par personnaliser les codes, c'est pour cela qu'il est préférable de les mettre dans la db, cela permet de ne pas trop toucher aux fichiers php mais de faire un script pour pouvoir modidier tout depuis la db, si j'en dit ca, c'est une question dans le temp et rien d'autre.
Pour ce qui est du preg_replace, oui tu as raison, il fait tout, pas besoin de boucle dans le cas de figure de ton script, c'est le plus approprié.
Ouais je comprend bien votre truc pour la DB, mais bon..... c pas un grand site, mois ce sera compliqué mieux ce sera :) ça me permet en même temps de vous montrer simplement le fichier, surtout qu'il est ultra simple.
vBulletin® v.3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org