Partage
  • Partager sur Facebook
  • Partager sur Twitter

Smiley?

En regex....

    6 mars 2007 à 22:36:07

    Voila, je me demandais comme faire pour créer des smiley, ou simplement pour faire comme ici en haut lorsque l'on clique sur "g" on a des balises qui apparaisent....


    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      6 mars 2007 à 22:54:22

      Une regex pour les smileys est comme n'importe quelle regex, sauf qu'au lieu de remplacer un texte par un autre, on le remplace par une image. Il faut donc avoir une image du smiley et par exemple dans un preg_replace avec le smiley :) ça donne :
      $texte = preg_replace('#\:\)#', '<img src="sourire.jpg" />', $texte);
      echo $texte;

      • Partager sur Facebook
      • Partager sur Twitter
        6 mars 2007 à 22:58:13

        Dis pas n'importe quoi MorbaC++ mdr
        Un simple str_replace avec un array font largment l'affaire ;) preg_replace() ça devient lourd, et c'est pas fais pour ça =)
        • Partager sur Facebook
        • Partager sur Twitter
          6 mars 2007 à 23:00:16

          On explique pas cela sur le site:s
          Vous avez eu vos sources où???

          Que j'y jette un oeil...

          tous cas la section expressions regulières c'est du balaize XD
          • Partager sur Facebook
          • Partager sur Twitter
            6 mars 2007 à 23:03:18

            Citation : Zpyke

            On explique pas cela sur le site:s
            Vous avez eu vos sources où???

            Que j'y jette un oeil...

            tous cas la section expressions regulières c'est du balaize XD



            Il n'y a pas besoin de source, c'est seulement un mixe de deux cours :
            - un sur les chaines de caractères (str_replace())
            - un sur les images (<img src="" alt="" />)

            Sinon, si j'ai compris ta 1ère question, il s'agit de javascript.
            • Partager sur Facebook
            • Partager sur Twitter
              7 mars 2007 à 14:41:59

              str_replace est boucoup mieux !
              Effetivement il s'agit de Javascript. Tu peux regarder dans le code source du SdZ.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                7 mars 2007 à 17:12:19

                Tout d'abord le javascript :

                smilies.js


                /* Mapping-Area.com */
                function emoticon(text) {
                var txtarea = document.post.comment;
                text = ' ' + text + ' ';
                if ((txtarea.createTextRange) && (txtarea.caretPos)) {
                var caretPos = txtarea.caretPos;
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
                txtarea.focus();
                } else {
                txtarea.value  += text;
                txtarea.focus();
                }}

                Ensuite le formulaire :

                formulaire.html


                <form method="post" action="" name="post">
                <script type="text/javascript" src="includes/smilies.js"></script>
                <table width="90%" align="center" border="1" cellspacing="0">
                <tr><td colspan="3"><a name="comment"></a><i>- Ajouter un commentaire</i></td></tr>
                <tr><td colspan="2" align="center">
                Pseudo</td><td align="center"><input type="text" name="nickname" size="25"></td></tr>
                <tr><td colspan="2" align="center" valign="top">Message<br><br>
                <table><caption>Smilies</caption><tr><td>
                <a href="javascript:emoticon(':)')"><img src="images/bbcode/smile.png" border="0"></a>
                <a href="javascript:emoticon(':D')"><img src="images/bbcode/heureux.png" border="0"></a>
                <a href="javascript:emoticon(';)')"><img src="images/bbcode/clin.png" border="0"></a>
                <a href="javascript:emoticon(':p')"><img src="images/bbcode/langue.png" border="0"></a></td></tr><tr><td>
                <a href="javascript:emoticon(':lol:')"><img src="images/bbcode/rire.gif" border="0"></a>
                <a href="javascript:emoticon(':euh:')"><img src="images/bbcode/unsure.gif" border="0"></a>
                <a href="javascript:emoticon(':(')"><img src="images/bbcode/triste.png" border="0"></a>
                <a href="javascript:emoticon(':o')"><img src="images/bbcode/huh.png" border="0"></a></td></tr><tr><td>
                <a href="javascript:emoticon(':colere2:')"><img src="images/bbcode/mechant.png" border="0"></a>
                <a href="javascript:emoticon('o_O')"><img src="images/bbcode/blink.gif" border="0"></a>
                <a href="javascript:emoticon('^^')"><img src="images/bbcode/hihi.png" border="0"></a>
                <a href="javascript:emoticon(':-°')"><img src="images/bbcode/siffle.png" border="0"></a>
                </td></tr></table></td><td align="center">
                <textarea name="comment" cols="70" rows="8"></textarea>
                <br><br><input type="image" name="submit" src="modules/<?php echo $module_name; ?>/poster.gif" width="120" height="63" border="0">
                </td></tr>
                </table>
                </form>

                Et enfin le php :

                comments.php


                function bbcode($comment){
                /* Codé sur l'exemple du Site du Zér0 */
                $bbcode = array(
                '#\:\)#i',
                '#\:D#i',
                '#\;\)#i',
                '#\:p#i',
                '#\:lol\:#i',
                '#\:euh\:#i',
                '#\:\(#i',
                '#\:o#i',
                '#\:colere2\:#i',
                '#o_O#i',
                '#\^\^#i',
                '#\:-°#i',
                '#\\\\\'#i');
                $html = array(
                '<img src="images/bbcode/smile.png">',
                '<img src="images/bbcode/heureux.png">',
                '<img src="images/bbcode/clin.png">',
                '<img src="images/bbcode/langue.png">',
                '<img src="images/bbcode/rire.gif">',
                '<img src="images/bbcode/unsure.gif">',
                '<img src="images/bbcode/triste.png">',
                '<img src="images/bbcode/huh.png">',
                '<img src="images/bbcode/mechant.png">',
                '<img src="images/bbcode/blink.gif">',
                '<img src="images/bbcode/hihi.png">',
                '<img src="images/bbcode/siffle.png">',
                "'");
                $comment = preg_replace($bbcode, $html, $comment);
                return $comment;
                }


                Un petit café ? :p
                • Partager sur Facebook
                • Partager sur Twitter
                  7 mars 2007 à 19:07:32

                  Citation : Foxi 31

                  Un petit café ? :p


                  Oui, j'ai mal la tête là !
                  Pendant que je le sirotte, profites-en pour aller lire l'article en suivant le lien fourni par Sylvain.sab ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    7 mars 2007 à 22:29:17

                    Juste un chose Bison, je trouve plus propre de faire ça :
                    function smileys($texte)
                    {
                      $in=array(
                            ':-((',// en colère
                            ':-(', // déçu
                            ':-)', //sourire
                            ':-D', // mort de rire
                            ':-p', // passe la langue
                            );
                      $out=array(
                            'en_colere.png'
                            'pas_content.png'
                            'clin_d-oeil.png'
                            'mort_de_rire.png'
                            'tire_la_langue.png'
                            );
                      foreach($in as $num_smiley=>$smiley)
                        $texte=str_replace($in[$num_smiley],'<img src="'.$out[$num_smiley].'" alt="'.$in[$num_smiley].'" />',$texte);
                      return $texte;
                    }
                    Que de mettre '<img ...' dans chaque élément de l'array.
                    Enfin, c'est juste un détail.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 mars 2007 à 8:17:24

                      Pas de boucle dans ma version !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 mars 2007 à 12:27:56

                        Boucle strictement inutile :) str_replace() va travailler tout seule comme une grande sur les tableaux passés en paramètres
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          9 mars 2007 à 23:42:03

                          Oui oui, je sais que str_replace gère très bien les arrays, mais je trouve plus clair d'écrire :
                          $texte=str_replace($in[$num_smiley],'<img src="'.$out[$num_smiley].'" alt="'.$in[$num_smiley].'" />',$texte);
                          Comme ça on comprend directement qu'on a un array avec la source et le smiley (texte), et puis pas besoin de "<img src=...." dans chaque élément de l'array.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mars 2007 à 10:39:31

                            Citation : Sylvain.sab

                            Oui oui, je sais que str_replace gère très bien les arrays, mais je trouve plus clair d'écrire :
                            $texte=str_replace($in[$num_smiley],'<img src="'.$out[$num_smiley].' alt="'.$in[$num_smiley].'" />');
                            Comme ça on comprend directement qu'on a un array avec la source et le smiley (texte), et puis pas besoin de "<img src=...." dans chaque élément de l'array.


                            Mais c'est ton foreach, bien plus lent d'ailleurs, qui doit, à chaque tour généré le balisage.
                            Enfin, c'est ta façon de voir.
                            Par ailleurs, ton code est faux car tu as besoin des clés dans ta boucle pour effectuer les transformations.
                            Il manque un paramètre essentiel à str_replace et il y a une faute de quote "

                            A part ça... :p
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              10 mars 2007 à 14:01:37

                              Citation : Bison

                              Mais c'est ton foreach, bien plus lent d'ailleurs, qui doit, à chaque tour généré le balisage.

                              Pourquoi est-ce que c'est plus lent ?
                              A cause des appels multiples à la fonction ?

                              Citation : Bison

                              Par ailleurs, ton code est faux car tu as besoin des clés dans ta boucle pour effectuer les transformations.
                              Il manque un paramètre essentiel à str_replace et il y a une faute de quote "

                              Ah oui...
                              J'ai corrigé.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Smiley?

                              × 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