Partage
  • Partager sur Facebook
  • Partager sur Twitter

BBCODE to HTML dans les news

Sujet résolu
    22 décembre 2005 à 19:43:29

    Alors tout d'abord bonsoir, je vais vous expliquer un peu mon code avant tout:
    J'ai intégré un système de bbcode à la page "proposer.php" de mon site qui permet aux visiteurs de proposer une news ( ah vous l'aviez deviné? :p ).
    Lorsque qu'il propose une news si je l'accept elle s'affiche sur la page d'acceuil.

    Mon système de bbcode marche tres bien pour la page proposer.php (il y a un apercu en tps réel etc) mais lorsque le visiteur clic sur envoyer,et que je valide sa news, elle s'affiche sur la page d'accueil avec les balise [gras]sdfijfds[/gras] , le code n'est pas transformé en html.

    Je vous met mon script pour que vous puissiez m'indiquer quelle partie du code doit être include(?) dans la page d'accueil.
    Merci beaucoup.

    cette portion de script est positionnée juste apres mon script php de la page proposez il ne vous aidera a comprendre la page d'apres mais n'est pas tres important je pense:

    <div id="bbcode">
    <script language="javascript" type="text/javascript" src="prev.js"></script>
    <!--on appelle le fichier prev.js pour faire fonctionne la prévisualisation-->
    <script language="Javascript">
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.form2.contenu;
    input.focus();
    /* pour IE (toujous un cas appar lui ;) )*/
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    /* pour les navigateurs plus récents que IE comme Firefox... */
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
    /* pour les autres navigateurs comme Netscape... */
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("insertion (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte");
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    function smilies(img)
    {
    window.document.form2.contenu.value += '' + img + '';
    }
    </script>
    <fieldset>
           <legend>Proposer une news</legend> <!-- Titre du fieldset -->
    <form method="post" action="proposer.php" name="form2" id="form2">

                   
                    <form method="post" action="proposer.php" name="form2" id="form2">
           
            <p>
                    <label>
                    Votre pseudo : &nbsp;&nbsp;
                    <input type="text" name="pseudo" size="27" />
                    </label>
            </p>
           
            <p">
                    <label>
                    Titre de la news :
                    <input type="
    text" name="titre" size="35" />
                    </label>
                    <br /> <br />
            </p>
    <input type="
    button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[gras]', '[/gras]');return(false)" />
    <input type="
    button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[italic]', '[/italic]');return(false)" />
    <input type="
    button" id="image" name="image" value="Image" onClick="javascript:bbcode('[image]', '[/image]');return(false)" />
    <input type="
    button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url=]', '[/url]');return(false)" />
    <a href="
    #" title="Créer une citation" onClick="javascript:bbcode('[citation=AUTEUR]', '[/citation]');return(false)">Citation</a>
    <img src="
    http://siteduzero.com/Templates/images/smilies/smile.png" title="" alt="" onClick="javascript:smilies(':D');return(false)" />
    <br />
    <input name="auto" id="auto" type="checkbox" onClick="automatique()" checked="checked" /> <label for="auto">Prévisualisation automatique</label>
    <!-- on créer la case à cocher pour un prévisualisation automatique -->
    <br />
    <textarea cols=80 rows=15 id="contenu" name="contenu"></textarea>
    <br />
    <input type="button" value="Prévisualiser" onClick="previsualisation();return(false)" /><!-- ce bouton va permettre aux utilisateurs de d'avoir un aperçu quand ils le veulent, pas en direct -->
    <div style="border: 1px dashed #000000; padding: 0.2em; height: 15; overflow: auto; width: 80;" align="left" id="prev"></div>
    <!-- on créer un div avec quelques caractéristique, on lui donne un nom et on ne le remplit pas, on le laisse vide -->
    <input type="submit" name="submit" value="Envoyer" />
    </form>
    </fieldset>

    </div> <!-- fin div du bbcode -->
     


    Voila la page prev.js

    var timer=0;
    var ptag=String.fromCharCode(5,6,7);
    function  previsualisation() {
    t=document.form2.contenu.value 
    t=code_to_html(t)
    if (document.getElementById) document.getElementById("prev").innerHTML=t
    if (document.form2.auto.checked) timer=setTimeout(previsualisation,1)
    <!-- le "1" est le temps que met le texte à s'afficher, "1" : le texte s'affichera en même temps que l'on écrit (en s) -->
    }
    function automatique() {
    if (document.form2.auto.checked) previsualisation() <!-- si on a cocher la case d'
    aperçu automatique -->
    }
    function code_to_html(t) {
    t=nl2khol(t)
    // balise Gras <!-- on lui dis que telles balises correspondent à tels codes en HTML -->
    t=deblaie(/(\[\/gras\])/g,t)
    t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span style="font-weight: bold;">$1</span>',t) 
    t=remblaie(t)

    // balise Italic
    t=deblaie(/(\[\/italic\])/g,t)
    t=remplace_tag(/\[italic\](.+)\[\/italic\]/g,'<span style="font-style: italic;">$1</span>',t) 
    t=remblaie(t)

    // balise Citation
    t=deblaie(/(\[\/citation\])/g,t)
    t=remplace_tag(/\[citation=([\s\S]*?)\](.+)\[\/citation\]/g,'<strong>Citation $1 :</strong><div style="border: 1px solid #000000; width: 50%; font-family: Verdana, \'Trebuchet MS\', Tahoma, \'Times New Roman\', Times, serif; text-align: left; font-size: 11px;" align="center">$2</div>',t) 
    t=remblaie(t)

    // balise Image
    t=deblaie(/(\[\/image\])/g,t)
    t=remplace_tag(/\[image\](.+)\[\/image\]/g,'<img src="$1" />',t)
    t=remblaie(t)

    // balise URL   
    t=deblaie(/(\[\/url\])/g,t)
    t=remplace_tag(/\[\url=([\s\S]*?)\](.+)\[\/url\]/g,'<a href="$1" target="_blank">$2</a>',t)
    t=remblaie(t)

    // smilies Smile <!-- on oublie pas les smilies -->
    t=remplace_tag(/:D/g,'<img src="http://siteduzero.com/Templates/images/smilies/smile.png" alt="" />',t) 
    t=remblaie(t)
    t=unkhol(t)
    t=nl2br(t)
    return t
    }
    <!-- tout le code qui suit c'est pour transformer toutes les balises, comme les preg_replace en PHP -->
    function deblaie(reg,t) {
    contenu=new String(t);
    return contenu.replace(reg,'
    $1\n');
    }
    function remblaie(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,'
    ');
    }
    function remplace_tag(reg,rep,t) {
    contenu=new String(t);
    return contenu.replace(reg,rep);
    }
    function nl2br(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,'
    <br/>');
    }
    function nl2khol(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,ptag);
    }
    function unkhol(t) {
    contenu=new String(t);
    return contenu.replace(new RegExp(ptag,'
    g'),'\n');
    }   
     


    Peut etre ces pages ne vous servirons pas mais elles vous éclairerons sur le systeme que j'utilise!
    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2005 à 20:06:37

      Ca, c'est parce que tu utilise un script côté client.
      Il faut parser le code en PHP avant de l'enregistrer dans ta BDD, si tu en utilise une.
      • Partager sur Facebook
      • Partager sur Twitter
        22 décembre 2005 à 20:44:17

        je my connais pratiquement pas en js c'est pour ca que j'ai pris le début d'un tuto.
        Comment parser kkchose avant qu'il entre dans la bdd ???
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2005 à 20:49:57

          En fait, un fois que le news est créée en bbcode, il faut l'enregister dans le bdd. C'est au moment ou elle s'affiche sur le site, qu'il faut convertire le bbcode en html. Comme cela, tu sais récupérer le bbcode pour modifier le news par exemple. Mais il te faut PHP, c'est "plus simple"
          • Partager sur Facebook
          • Partager sur Twitter

          Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

            22 décembre 2005 à 21:13:12

            OK donc c'est ce que je pensais, il faut que j'utilise une fonction php pour remplacer chaque bbcode en html ? Si possible pouvez vous m'en dire un peu plus ? merci
            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2005 à 21:18:34

              Tu fais la même chose que tu avais faite, sauf que tu le fais en PHP, juste avant d'enregistrer ta news.
              • Partager sur Facebook
              • Partager sur Twitter
                22 décembre 2005 à 21:34:54

                je comprends pas bien la vous semblez avoir tout 2 des méthodes différentes???
                Je pense que la meileure solution et de remplacer les bbcode juste avant d'afficher la news non? car si je dois enregistrer tout bien écrit dans la bdd je risque de devoir changer tout le script ? et je ne pourrais pas faire de previsualisation?
                • Partager sur Facebook
                • Partager sur Twitter
                  22 décembre 2005 à 21:41:29

                  Bien, Thunderseb a proposé deux manières, j'en propose qu'une. Mis à part ça, on dit la même chose.

                  Une solution est de garder JavaScript, et d'appliquer ce script une autre fois, mais pendant l'affichage. Pas pendant qu'on le rédige : ces modif's faites avec JS ne sont pas stockées, c'est à dire que les modifications ne sont pas enregistrées ; donc, tes modif's s'en vont sitôt que c'est validé ; et re-donc, ça foire. Pour ça qu'il faut refaire les modif's à l'affichage.
                  Comme tu le vois, c'est pas pratique. De plus, ça gênerai vraiment les gens qui n'ont pas activé le JS.

                  La solution PHP, c'est que tu fais tes modifications sur le texte qui va être enregistré. La différence est flagrante, c'est que tes modifications sont cette fois permanentes.
                  Et comme tu le vois, ta prévisualisation sera toujours là.
                  Tu peux garder ton code pour la prévisu', mais tu en rajoutes un en PHP qui parse le code avant de l'enregistrer dans ta BDD. Où est le problème ?

                  Sinon, pour convertir ce qui est déjà dans ta BDD, c'est simple.
                  Une fois ton script de parsage terminé, tu l'appliques aux entrées de la base de donnée qui en ont besoin. C'est aussi simple que ça.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 décembre 2005 à 21:46:20

                    Moi je dis que le texte avec bbcode doit être enregistré tel quel dans la bdd. Quand on affiche la page d'accueil, un fonction PHP récupère ce texte en bbcode, et le transforme en HTML. comme cela, le bbcode reste bien au chaud dans ta bdd, et si tu fais une faute d'orthographe par exemple, tu peux modifier ta news dire tement dans la bdd, sans devoir réécrire tout le bbcode.Perso, je pense que c'set plus facile. Et je te conseille de garder ton Javascript pout faire un prévisualisation, lors de la rédaction de la news ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                      22 décembre 2005 à 21:53:08

                      Par contre, je te conseille vivement de pas faire comme il dit, c'est à dire que je t'invite à enregistrer dans ta BDD le code déjà parsé.

                      Pourquoi ? Parce que le moteur de regex est lent. Globalement, si de telles opérations sont faites à chaque affichage de ta page, tu n'es pas sorti de l'auberge.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 décembre 2005 à 22:00:21

                        je trouve les 2 méthodes aussi satisfaisantes l'une que l'autre, je ne sais pas du tout comment je vais m'y prendre.
                        D'un coté si je veux modifier mes news il est préférable d'avoir la news en bbcode comme la dit Thundersed.
                        Par contre Lyric il est vrai qu'il est préférrable d'avoir un texte en html dans la bdd pour pouvoir l'utiliser n'importe ou!
                        Le SDZ utilise quelle méthode?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 décembre 2005 à 22:01:37

                          Citation : @Lyric

                          Par contre, je te conseille vivement de pas faire comme il dit, c'est à dire que je t'invite à enregistrer dans ta BDD le code déjà parsé.

                          Pourquoi ? Parce que le moteur de regex est lent. Globalement, si de telles opérations sont faites à chaque affichage de ta page, tu n'es pas sorti de l'auberge.



                          Mais non, c'est mieux après, comme cela, si il veut modifier une news, il peut choisir de la réafficher en bbcode. et puis, lent... tout dépend d'ou il héberge ses truc. si c'set sur ifance, à 6 hures du soir, le dimanche, c'set sur que ça va être lent :lol:

                          ou alors, tu créés 2 tables dans la bdd, un qui accueillera le code parsé, et uen autre le code bbcode. :p

                          EDIT : le SDZ utulise ma méthode. Pourquoi crois tu que l'on peut faire de scitation, et éditer ses posts en zcode. C'est pareil. Ma méthode pour cela à du bon :D
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                            22 décembre 2005 à 22:03:52

                            ah un peu en retard mon message.
                            Je vois, mais il n'existe pas un equivalent entre les 2méthodes? le site du zero fait commentdapres vous ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 décembre 2005 à 22:04:25

                              Non mais c'est pas le problème de l'hébergeur, le tilt n'est pas là.
                              C'est que c'est pourri, un point c'est tout.
                              Non, si il le veut il se crée une fonction retransformant le code parsé en BBcode, c'est la seule solution viable.
                              Quant à doubler la taille de la BDD pour une chose aussi futile, tu n'y pense pas :euh: .

                              Edit : C'était censé être à la suite de celui de Thunderseb, hein. Et voilà la réponse à ta question plus haut.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 décembre 2005 à 22:06:56

                                ah d'accord, je comprends bien tout les avantages ou inconvenient mais la meilleure solution serait donc deparser les code avant puis de creer une fonction pour les passer en bbcode lorsque j'éditerais une news??
                                C'est comme ca que fonctionne le sdz non?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 décembre 2005 à 22:11:02

                                  Citation : Rn^

                                  ah d'accord, je comprends bien tout les avantages ou inconvenient mais la meilleure solution serait donc deparser les code avant puis de creer une fonction pour les passer en bbcode lorsque j'éditerais une news??
                                  C'est comme ca que fonctionne le sdz non?



                                  Oui. Mais c'est du boulot :) Il te faut une fonction de rebbcodage :lol: mais je ne suis pa sur que cela se passe vraiment comme cela sur le SDZ.

                                  Au fait, tu connais le PHP ? ^^
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                    22 décembre 2005 à 22:13:37

                                    En faite avant je fesais mes site grace a des scripts tout faits mais que je modifiais mais depuis 1mois je commence un nouveau site que je fais moi meme en php jai lu tous les cours de mateo et jme lance sa marche plutot bien ;Z
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 décembre 2005 à 22:13:58

                                      C'est pas plus de boulot que la fonction de parsage...
                                      Et j'espère de tout coeur que le site du Zéro ne s'amuse pas à avoir tous les messages en doublons, l'un en html, l'autre en zCode, ni à torturer ce pauvre Bart avec un moteur de regex sollicité à une fréquence de quelques milliers de fois par seconde.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 décembre 2005 à 22:22:41

                                        Citation : @Lyric

                                        C'est pas plus de boulot que la fonction de parsage...
                                        Et j'espère de tout coeur que le site du Zéro ne s'amuse pas à avoir tous les messages en doublons, l'un en html, l'autre en zCode, ni à torturer ce pauvre Bart avec un moteur de regex sollicité à une fréquence de quelques milliers de fois par seconde.



                                        Je suis d'accord avec toi ;) C'est pour cela que je me suis tjs demandé pourquoi ne pas rédiger en HTML, en restreignant l'utilisation de balise pouvant être foireuses (script, frame, iframe, embed...) :euh:
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                          22 décembre 2005 à 22:25:43

                                          lol c'est vrai que faire deux tables... aie aie aie la lenteur.
                                          Merci a vous je vais donc tenter de creer une fonction qui parsera(?) mon texte avant l'insertion dans la bdd puis une fonction qui transformera le code html en bbcode pour l'édit des news. Si vous aviez juste un plan pour m'expliquer un peu comment faire.

                                          Par exemple je dois creer une variable du texte en bbcode pour le transformer avec un parser ( donc je peu le faire avec le cour de mateo je pense ) puis apres l'inserer dans la bdd.
                                          Puis pour editer une news faire la fonction inverse (ca c'est encore moins gagner que le parser) et afficher le resultat de la fonction.
                                          C'est pas ca :p ?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            22 décembre 2005 à 22:37:57

                                            Rédaction : (une page pour chaque fonction, pour la facilité)
                                            Zone de texte -> Conversion en HTML -> Mise dans la table de la bdd

                                            Lecture :
                                            Récupération du contenu de l'entrée dans la table -> affchage sur la page

                                            Modification :
                                            Récupération du contenu de l'entrée dans la table -> Conversion en bbcode -> affichage dans la zone de texte -> Conversion en HTML -> Mise à joue de l'entrée dans la table de la bdd.

                                            C'est le schéma du truc, en gros.

                                            pour la création des regex, je sais pas t'aider. Je trouve cela imbuvable. Mais tu dois pouvoir trouver des exemple de regex pour le bbcode ;)

                                            Tiens, un peu de lecture : http://www.siteduzero.com/tuto-3-760-1-systeme-de-bbcode.html :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                              22 décembre 2005 à 22:58:28

                                              ok merci j'avais déja lu ce tuto mais je vais m'en inspirer pour creer ma fonction, je les crérai dans des fichiers differents comme tu m'a dit, je reposterai ici si j'ai des problemes! merci encore je vais m'y mettre meme si sa va etre tres dur je crois bien!
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 décembre 2005 à 12:34:06

                                                Bon j'ai quelques petits soucis, j'ai vu dans bcp de pages que il y avait des preg-replace sans fonction.
                                                Comme j'ai essayer de creer une petite fonction pour essayer:

                                                page: BBcodeTOhtml.php

                                                <?
                                                function BBcodetoHTML($texte)
                                                {
                                                $texte = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $texte);
                                                $texte = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $texte);
                                                $texte = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $texte);
                                                }
                                                ?>


                                                Voila imaginons que ma fonction soit finie comment m'en servir? je fais un include de ce fichier juste avant d'inserer dans la bdd pour transformer le bbcode en html?

                                                hum... merci

                                                sinon pour la fonction inverse sa serait de ce genre la? :

                                                <?
                                                function htmlTOBBcode($texte)
                                                {
                                                $texte = preg_replace('!<strong>(.+)</strong>!isU', '[b\]$1[b\]', $texte);
                                                }
                                                ?>


                                                merci!
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 décembre 2005 à 12:44:58

                                                  Essaie un peu avec return :

                                                  <?
                                                  function BBcodetoHTML($texte)
                                                  {
                                                  $texte = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $texte);
                                                  $texte = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $texte);
                                                  $texte = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $texte);
                                                  }

                                                  return $texte;
                                                  ?>
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                                    23 décembre 2005 à 12:47:51

                                                    en faite ce que je sais pas faire c'est justement essayer! ou placer cette fonction et comment l'apeler? merci
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 décembre 2005 à 12:51:17

                                                      Je dirais comme ça :

                                                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                                                      <html xmlns="http://www.w3.org/1999/xhtml">
                                                      <head>
                                                      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                                      <title>Document sans titre</title>
                                                      </head>
                                                      <?
                                                      // Récupération du texte
                                                      $texte = (isset($_POST['texte'])) ? $_POST['texte'] : NULL;

                                                      function BBcodetoHTML($texte)
                                                      {
                                                      $texte = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $texte);
                                                      $texte = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $texte);
                                                      $texte = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $texte);

                                                      return $texte
                                                      }

                                                      echo $texte;
                                                      ?>
                                                      <body>
                                                      </body>
                                                      </html>
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                                        23 décembre 2005 à 12:54:50

                                                        ah d'accord donc en fait il ne faut pas que je cré mais fonction dans des fichiers different je les met directement dans ma page.
                                                        Sinon tu te souviens que j'avais l'intention de changer mon bbcode en html avant de le mettre dans la bdd puis pour editer une news le rechanger en bbcode grace a la deuxieme fonction. Dans mon code je dois donc placer ma fonction juste avant d'envoyer ma variable contenu ds la bdd ? (enfin variable texte)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          23 décembre 2005 à 13:00:46

                                                          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                                                          <html xmlns="http://www.w3.org/1999/xhtml">
                                                          <head>
                                                          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                                          <title>Document sans titre</title>
                                                          </head>
                                                          <?
                                                          // Récupération du texte
                                                          $texte = (isset($_POST['texte'])) ? $_POST['texte'] : NULL;

                                                          function BBcodetoHTML($texte)
                                                          {
                                                          $texte = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $texte);
                                                          $texte = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $texte);
                                                          $texte = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $texte);

                                                          return $texte
                                                          }

                                                          echo $texte;

                                                          // Mise du texte dans la base de données, enfin, un truc du genre
                                                          // Mais le mieux est de mettre ceci sur une autre page. Tu envoies $texte avec un formulaire sur la page où le texte sera mis dans la bdd.
                                                          require('config.php');
                                                          $connexion = mysql_connect($hote,$login,$m_d_p);
                                                          mysql_select_db($bdd,$connexion);
                                                                 
                                                          $requete = "insert into news values('','$texte')";
                                                          mysql_query($requete);
                                                          ?>
                                                          <body>
                                                          </body>
                                                          </html>
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                                            23 décembre 2005 à 13:06:47

                                                            la parti php serait donc comme ca? :

                                                                    <?php
                                                                    if (isset($_POST['contenu']) AND isset($_POST['titre']) AND isset($_POST['pseudo']))  //Si on a posté qq chose (avec un pseudo)
                                                                    {
                                                                            if (!empty($_POST['contenu']) AND !empty($_POST['titre']) AND !empty($_POST['pseudo'])) //Si ce que l'on a posté n'est pas vide
                                                                            {
                                                                                    $titre = $_POST['titre'];
                                                                                    $contenu = $_POST['contenu'];
                                                                                    $pseudo = $_POST['pseudo'];
                                                                                                            $contenu = htmlentities($contenu,ENT_QUOTES);
                                                                                    $contenu = nl2br($contenu);
                                                            function BBcodetoHTML($contenu)
                                                            {
                                                            $contenu = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $contenu);
                                                            $contenu = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $contenu);
                                                            $contenu = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $contenu);

                                                            return $contenu
                                                            }

                                                                                                                   
                                                                                    mysql_connect("localhost", "root", "");
                                                                                    mysql_select_db("test")
                                                                   
                                                            mysql_query("INSERT INTO news (titre, contenu, timestamp, pseudo, valide) VALUES ('" . $titre . "', '" . $contenu . "', '" . time() . "', '" . $pseudo . "', '0')");
                                                            //Insertions dans la base avec  0 comme valeur
                                                                     
                                                                                    echo '<br /><b>Votre news a été postée avec succès, un admin va bientot se charger de l\'accepter si elle convient.</b> <br /> <br />';
                                                                            }
                                                                            else
                                                                            {
                                                                                    echo '<b>Veuillez remplir tous les champs</b>'; //Les champs ne sont pas tous remplis
                                                                            }
                                                                    }
                                                                    ?>
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              23 décembre 2005 à 22:03:57

                                                              ca m'a l'air bon. Pense aussi a appliquer un htmlentities, pour éviter que les gens ne tappent du code HTML, qui pourait être dangereur (code JS notamment) ;)
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Ma vraie biographie - Ex-Manager de la Validation sur le Site du Zéro - sdlm.be - Horus.aero

                                                              BBCODE to HTML dans les news

                                                              × 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