Partage
  • Partager sur Facebook
  • Partager sur Twitter

bbcode

    3 août 2006 à 19:50:23

    Bonjours à tous,
    j'ai créer mon forum en php et mon problème est que le bbcode n'apparait pas.

    voici mais 2 pages.

    fonction.php
    <?php
    function generate($longueur)
    {
    $alphabet_min = array('a','b','c','d','e','f','g','h',
                                              'i','j','k','l','m','n','o','p',
                                              'q','r','s','t','u','v','w','x',
                                              'y','z');
     
    $alphabet_maj = array('A','B','C','D','E','F','G','H',
                                              'I','J','K','L','M','N','O','P',
                                              'Q','R','S','T','U','V','W','X',
                                              'Y','Z');
     
    $longueur--; //On commencera notre boucle à 0, alors on soustrait 1
     
    $code = '';
            for ($i = 0;$i <= $longueur;$i++)
            {
            $use = rand(1,3);
                    if ($use == 1)
                    {
                    $use_char = rand(0,25); //Jusqu'à 25, un array commence à 0
                    $char = $alphabet_min[$use_char];
                    }
                    if ($use == 2)
                    {
                    $use_char = rand(0,25);
                    $char = $alphabet_maj[$use_char];
                    }
                    if ($use == 3)
                    {
                    $char = rand(0,9); //Limite de 9, pour pas dépasser le maximum
                    }
            $code = $code . $char;
            }
            return $code;
    }
     
    echo generate(9); //Pourquoi pas tester :p
    ?>
    <?php
    function bbcode($texte)
    {
    $texte = preg_replace('@\[b\](.*)\[/b\]@iU', '<b>$1</b>', $texte);
    $texte = preg_replace('@\[i\](.*)\[/i\]@iU', '<em>$1</em>', $texte);
    $texte = preg_replace('@\[u\](.*)\[/u\]@iU', '<span style="text-decoration: underline;">$1</span>', $texte);
    $texte = preg_replace('@\[img\](.*)\[/img\]@iU', '<img src="$1" alt="Image" />', $texte);

    //Les citations
    $texte = preg_replace('@\[citation=(.+)\](.+)\[/citation\]@iUs', '<p style="margin-left: 30px; font-weight: bold;">$1 a écrit</p><div style="margin-left:30px; border:1px dashed black; padding:5px;">$2</div>', $texte);

    //Les couleurs
    $texte = preg_replace('@\[couleur=(.+)\](.+)\[/couleur\]@iUs', '<span style="color: $1;">$2</span>', $texte);

    //Les liens
    $texte = preg_replace('@\[url=(.+)\](.+)\[/url\]@iUs', '<a href="$1">$2</a>', $texte);

    //Les listes
    $texte = preg_replace('@\[liste=puces\](.+)\[/liste\]@iUs', '<ul>$1</ul>', $texte); //À puces
    $texte = preg_replace('@\[liste=numeros\](.+)\[/liste\]@iUs', '<ol>$1</ol>', $texte); //À numéros
    $texte = preg_replace('@\[element\](.+)\[/element\]@iUs', '<li>$1</li>', $texte); //Les éléments


    //Les tailles
    $texte = preg_replace('@\[taille=tpetit\](.+)\[/taille\]@iUs', '<span style="font-size: 8px;">$1</span>', $texte); //Très petit
    $texte = preg_replace('@\[taille=petit\](.+)\[/taille\]@iUs', '<span style="font-size: 11px;">$1</span>', $texte); //Petit
    $texte = preg_replace('@\[taille=grand\](.+)\[/taille\]@iUs', '<span style="font-size: 18px;">$1</span>', $texte); //Grand
    $texte = preg_replace('@\[taille=tgrand\](.+)\[/taille\]@iUs', '<span style="font-size: 25px;">$1</span>', $texte); //Très grand

    //La balise mailto
    $texte = preg_replace('@\[mailto=(.+)\](.+)\[/mailto\]@iUs', '<a href="mailto:$1">$2</a>', $texte);

    //Les émoticônes
    $array_smiles = array(':happy:', ';)', ':bad:'); //Le tableau avec les codes
    $array_images = array('sourire.gif', 'clindoeil.gif', 'pascontent.gif');//Le tableau avec les images

    //On compte le nombre d'entrées des tableaux :
    $nbre_entrees = count($array_smiles);

    for ($i = 0; $i < $nbre_entrees; $i++)
    {
    //On remplace le code par l'image, tout simplement
    $texte = str_replace($array_smiles[$i], '<img src="../images/smiles/' . $array_images[$i] . '" alt="' . $array_smiles[$i] . '" />', $texte);
    }
    return $texte; //On retourne le texte formaté.
    }
    ?>


    sujet.php
    <?php
    session_start();
    include ('includes/infos-connexion.php');
    include ('includes/fonctions.php');
     
    mysql_connect($config['host'], $config['user'], $config['pass']);
    mysql_select_db($config['base']);
     
    if (!isset($_GET['sujet']))
    {
    header("Location: index.php");
    }
    else
    {
    //On vérifie si ça contient bien un chiffre
            if (preg_match('@[0-9]{1,9}@', $_GET['sujet']))
            {
            //C'est un chiffre
            $count = mysql_query("SELECT COUNT(*) AS nbre_tpcs FROM
            sujets WHERE id="
    . $_GET['sujet'] . " AND msg_parent_id=0");
            $dcount = mysql_fetch_array($count);
           
                    if ($dcount['nbre_tpcs'] != 1)
                    {
                    header("Location: index.php");
                    }
                    else
                    {
                    //Le topic existe, on trouve le titre
                    $select_titre = mysql_query("SELECT titre FROM sujets WHERE
                    id="
    . $_GET['sujet']);
                    $dselect_titre = mysql_fetch_array($select_titre);
                   
                    $titre = stripslashes($dselect_titre['titre']);
                    }
            }
            else
            {
            //Ce n'est pas un chiffre
            header("Location: index.php");
            }
           
            $count_msg = mysql_query("SELECT COUNT(*) AS nbre_msgs FROM sujets
            WHERE id="
    . $_GET['sujet'] . " OR msg_parent_id=" . $_GET['sujet']);
           
            $dcount_msg = mysql_fetch_array($count_msg);
           
            $nbre_msgs      = $dcount_msg['nbre_msgs'];
            $nbre_msgs_page = 10;
           
            $nbre_pages     = ceil($nbre_msgs / $nbre_msgs_page);
           
           
            //Recherche de la page en cours
            if (isset($_GET['page']))
            {
                    if (preg_match('@[0-9]{1,9}@', $_GET['page']))
                    {
                            if ($_GET['page'] <= $nbre_pages && $_GET['page'] > 0)
                            {
                            $page = $_GET['page'];
                            }
                            else
                            {
                            $page = 1;
                            }
                    }
                    else
                    {
                    $page = 1;
                    }
            }
            else
            {
            $page = 1;
            }
           
            $limit_debut = ($page - 1) * $nbre_msgs_page;
            $limit_fin   = $nbre_msgs_page;
    }
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html>
            <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <title><?php echo $titre; ?> - Forums</title>
                    <link rel="stylesheet" media="screen" type="text/css"
                    title="design général" href="./styles/design.css" />
                    <SCRIPT LANGUAGE="JavaScript">
    if(document.images)
    {
    i264747 = new Image;
    i264747 = "images/repondre3.jpg";
    }
    </SCRIPT>
            </head>
           
            <body>
                    <!-- L'en-tête -->
     
               <?php
    include("en_tete.php");
    ?>
                    <!-- Les menus -->
     
    <?php
    include("menu2.php");
    ?>
                    <div id="haut">
     
    <?php
    include('
    includes/haut.php');
    ?>
     
           
                    </div>
                    <center><h1><?php echo $titre; ?></h1></center>
    <A HREF="poster.php?mode=repondre&sujet=<?php echo $_GET['
    sujet']; ?>" onMouseOver="i264747.src='images/repondre3.jpg'"  onMouseOut="i264747.src='images/repondre2.jpg'"><IMG SRC="images/repondre2.jpg" BORDER=0 NAME="i264747" ALT="Repondre" HSPACE=0 VSPACE=0></A>
     
    <?php
    echo '
    <table class="forums">';
     
    //Nos titres de colonnes
    echo '
    <tr>
            <th class="i" id="auteur_sujets">Auteur</th>
            <th class="i" id="message_sujets">Message</th>
            </tr>';
     
    //Pour chaque message, une ligne de tableau
     
    mysql_connect($config['
    host'], $config['user'], $config['pass']);
    mysql_select_db($config['
    base']);
     
    //La variable qui contient l'
    id du forum
    $id = $_GET['sujet'];
     
    //Observez le LIMIT
    $topic = mysql_query("SELECT * FROM
    sujets WHERE id=$id OR msg_parent_id=$id ORDER BY id ASC
    LIMIT $limit_debut, $limit_fin"
    );
     
    while ($dtopic = mysql_fetch_array($topic))
    {
    $titre = stripslashes($dtopic['titre']);
     
    //La case pour l'auteur
    echo '<td class="g" valign="top">';
    if ($dtopic['par'] != 'Invité')
    {
    $pseudo = $dtopic['par'];
    $info = mysql_query("SELECT id,statut,avatar,date,signature
    FROM membres WHERE username='$pseudo'"
    );
    $dinfo = mysql_fetch_array($info);
     
    $statut_array = array('Mebmre', 'Modérateur', 'Administrateur');
    $avatar = $dinfo['avatar'];
    $statut = $statut_array[$dinfo['statut']];
    $date = $dinfo['date'];
     
    $signature = $dinfo['signature'];
     
    //Un lien vers le profil, une page que nous créerons plus tard
    echo '<a href="profil.php?membre=' . $dinfo['id'] . '"
    title="Voir le profil de '
    . stripslashes($pseudo) . '">' .
    stripslashes($pseudo) . '</a><br />';
     
    //Affichage de l'avatar
            if ($dinfo['avatar'] != '')
            {
            echo '<img src="./images/avatars/' . $dinfo['avatar'] . '"
            alt="Avatar" style="width:100px; height;100px;" /><br />'
    ;
            }
    //On compte le nombre de messages du membre
    $count = mysql_query("SELECT COUNT(*) AS nbre_msgs FROM sujets WHERE
    par=' . $pseudo . '"
    );
    $dcount = mysql_fetch_array($count);
     
    $nbre_msgs = $dcount['nbre_msgs'];
     
    echo 'Messages : ' . $nbre_msgs . '<br />';
    echo 'Inscrit le ' . date('d/m/Y', $dinfo['date']);
    }
    else
    {
     
    $signature = '';
    echo 'Invité';
    }
    echo '</td>';
     
    //La case pour le message
    echo '<td class="g" valign="top">';
            echo '<p class="details-haut">Posté le ' . date('d/m/Y', $dtopic['date'])
            . ' à ' . date('H:i:s', $dtopic['date']) . '</p>';
           
            echo bbcode(stripslashes($dtopic['texte'])); // ))ICI((
           
            echo '<p class="details-bas">' . stripslashes($signature) . '</p>';
    echo '</td>';
    echo '</tr>';
    }
     
    echo '</table>';
     
    //Les liens vers les différentes pages :
    echo '<p class="j" style="text-align:center;">';
    for ($i = 1; $i <= $nbre_pages; $i++)
    {
            if ($page - $i <= 2 && $i <= $page + 2)
            {
                    if ($i == $page)
                    {
                    echo ' ' . $i . ' ';
                    }
                    else
                    {
                    echo ' <a href="sujet.php?page=' . $i . '&sujet=' . $_GET['sujet']
                    . '" title="Aller à la page ' . $i . '">' . $i . '</a> ';
                    }
            }
            else
            {
                    if ($i == $nbre_pages)
                    {
                    echo ' ...<a href="sujet.php?page=' . $i . '&sujet=' . $_GET['sujet']
                    . '" title="Aller à la page ' . $i . '">' . $i . '</a> ';
                    }
                    if ($i == 1)
                    {
                    echo ' <a href="sujet.php?page=' . $i . '&sujet=' . $_GET['sujet']
                    . '" title="Aller à la page ' . $i . '">' . $i . '</a>... ';
                    }
                   
            }
    }
    echo '</p>';
    //On incrémente le nombre de fois qu'il a été vu
    mysql_query("UPDATE sujets SET nbre_vu=nbre_vu+1 WHERE id=" . $_GET['sujet']);
    ?>
     
            <?php
    include("pied_de_page.php");
    ?>
            </body>
    </html>
     
    <?php
    mysql_close();
    ?>
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 août 2006 à 20:01:01

      Pour du bbcode, et surtout des smiley, on utilise str_replace() et non preg_replace() ;)
      • Partager sur Facebook
      • Partager sur Twitter
        3 août 2006 à 20:18:35

        Citation : Kataklysm


        <?php
        function generate($longueur)
        {
        $alphabet_min = array('a','b','c','d','e','f','g','h',
                                                  'i','j','k','l','m','n','o','p',
                                                  'q','r','s','t','u','v','w','x',
                                                  'y','z');
         
        $alphabet_maj = array('A','B','C','D','E','F','G','H',
                                                  'I','J','K','L','M','N','O','P',
                                                  'Q','R','S','T','U','V','W','X',
                                                  'Y','Z');
         
        $longueur--; //On commencera notre boucle à 0, alors on soustrait 1
         
        $code = '';
                for ($i = 0;$i <= $longueur;$i++)
                {
                $use = rand(1,3);
                        if ($use == 1)
                        {
                        $use_char = rand(0,25); //Jusqu'à 25, un array commence à 0
                        $char = $alphabet_min[$use_char];
                        }
                        if ($use == 2)
                        {
                        $use_char = rand(0,25);
                        $char = $alphabet_maj[$use_char];
                        }
                        if ($use == 3)
                        {
                        $char = rand(0,9); //Limite de 9, pour pas dépasser le maximum
                        }
                $code = $code . $char;
                }
                return $code;
        }
         
        echo generate(9); //Pourquoi pas tester :p
        ?>

        C'est ton générateur de mot de passe ça ?

        En plus court : Générateur de mot de passe 1 et 2
        • Partager sur Facebook
        • Partager sur Twitter

        bbcode

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown