Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

bbcode [résolu]


zbibou

Messages recommandés

bonjour,

 

J'essaie de concevoir un site en utilisant phpbb3 comme structure de base. (sous easy php en local)

En bidouillant un peu je me suis créer une page d'accueil utilisant les overall_header et footer trafiqués ( pour avoir ma propre barre de menu, logo ect... ) dans laquelle j'ai inséré des "news" ( celle ci sont tirés d'un forum caché sur phpbb intitulé "news" évidemment...).

J'ai donc réussi à faire en sorte que s'affiche les trois derniers posts du mon forum "news" sur ma page d'accueil.

 

Cependant, je ne sais pas comment faire pour réussir à interpréter les bbcodes.

Quelqu'un peut il me donner quelques pistes ?

 

merci.

Modifié par zbibou
Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

J'imagine que tu connais le BBCode. Tu en trouveras en tout cas la liste des codes standard utilisés sur Zébulon en cliquant sur “Aide BBCodes” en bas à droite de la fenêtre de saisie d'un post.

 

Il s'agirait donc plutôt de décoder une chaîne de caractères pour y trouver des couples de balises BBCode (ouverture/fermeture), et en tirer les conséquences ?

 

Tu vas avoir besoin de ce qu'on nomme des “expressions rationnelles” ou “expressions régulières”, permettant de trouver des motifs et de les extraire, genre (si je ne me trompe pas),

if ($string =~ /\[(.*)\]?(.*)\[\/$1\]?/) {
 if ($1 eq "b") {mettre $2 en gras}
 if ($1 eq "i") {mettre $2 en italiques}
 etc.
}

$1 est le premier groupe de caractères entre parenthèses, et $2 le second. On cherche donc un groupe de caractères entre crochets, puis le premier groupe identique précédé par un slash et entre crochets, et le groupe de caractères en sandwich entre les deux est celui auquel est appliqué le BBCode concerné (nota : cette codification d'expression rationnelle est celle du langage PERL, et tu devras respecter celle du langage que tu utiliseras, qui peut légèrement différer).

 

Attention, il peut y avoir des imbrications, donc tu devras construire une récurrence sur $2, qui contient peut-être elle-même du BBCode. Exemple : [b][i]texte en italique gras[/i][/b]

 

Mais peut-être suis-je à côté de la plaque ?

Lien vers le commentaire
Partager sur d’autres sites

Merci Dylav pour ta réponse.

 

Effectivement mon but est bien la traduction ou l'interprétation des bbcodes.

 

J'utilise phpbb3 (forum en open source) qui utilise ses propre bbcodes. Je crois qu'il faut connaitre ce forum pour comprendre exactement ce que je veux.

Il y a donc déjà tout dans ce forum pour l'édition et l'interprétation des bbcodes (quelque part).

 

Il doit vraisemblablement suffire dans mon cas de faire appel à une fonction du forum sous certaine conditions (?), mais mes notions de php s'arrêtent bien avant cela...

Modifié par zbibou
Lien vers le commentaire
Partager sur d’autres sites

Merci de t'être penché sur le sujet :P

 

Pour info voici les lignes de code que j'utilise:

 

Celle de la page php pour recuprer les données "news":

$sql = "SELECT topic_title, topic_time, post_attachment, bbcode_bitfield, bbcode_uid, post_text FROM phpbb_topics AS p, phpbb_posts AS t WHERE p.topic_id = t.topic_id ORDER BY topic_time DESC LIMIT 0 , 3";		 
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{
  $template->assign_block_vars('topicrow', array(
  'FIRST_POST_TIME'   => $user->format_date($row['topic_time']),
  'TOPIC_TITLE'	   => $row['topic_title'],
  'TEXT'			  => $row['post_text'],
  'BBCODE_UID'		=> $row['bbcode_uid'],
  'BBCODE'			=> $row['bbcode_bitfield'],

  ));

 

Celle sur ma page html pour les afficher:

	<div class="catmainnews">
   <div class="catls"></div>
   <div class="cattext">{L_NEWS}</div>
   <div class="catrs"></div>
</div><!-- BEGIN topicrow -->
   <table class="tablebgnews" width="100%" cellspacing="1">
	   <td colspan="2"class="row2" width="100%"><h3><div align="center">{topicrow.TOPIC_TITLE}</div></h3>{L_POSTED_ON_DATE} {topicrow.FIRST_POST_TIME} </td>
   <tr>
	  <td class="row1" align="center" valign="middle"><img src="{T_THEME_PATH}/images/news.png" /></td>
	  <td class="row2" width="100%"><p class="genmed">{topicrow.TEXT}<!-- IF tocicrow.BBCODE -->{topicrow.BBCODE}<!-- ENDIF --></p></td>
   </tr><!-- END topicrow -->
   </table>

 

(...)

Modifié par zbibou
Lien vers le commentaire
Partager sur d’autres sites

En fait, ce qui serait encore mieux, c'est que tu exposes ici ta solution :P

 

Soite...

Voilà le code qu'il fallait rajouter pour que soit interprété les bbcodes

(sur la feuille php):

$sql = "SELECT topic_title, topic_time, post_attachment, bbcode_bitfield, bbcode_uid, post_text FROM phpbb_topics AS p, phpbb_posts AS t WHERE p.topic_id = t.topic_id ORDER BY topic_time DESC LIMIT 0 , 3";			
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{			
  $message = $row['post_text'];
  $bbcode_bitfield = base64_decode($row['bbcode_bitfield']);
  $bbcode = new bbcode(base64_encode($bbcode_bitfield));
  $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
  $message = bbcode_nl2br($message);
  $message = smiley_text($message);
  $template->assign_block_vars('topicrow', array(
  'FIRST_POST_TIME'   => $user->format_date($row['topic_time']),
  'TOPIC_TITLE'	   => $row['topic_title'], 
  'TEXT'			  => $message, 
  'BBCODE_UID'		=> $row['bbcode_uid'],
  'BBCODE'			=> $row['bbcode_bitfield'],

  ));
}

 

Attention tout de même à la sécurité (que j'ai supprimé par facilité puisque je serai le seul a poster dans cette section)!

Voilà...

Bon courrage à tous.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...