Partage
  • Partager sur Facebook
  • Partager sur Twitter

Colorer un mot dynamiquement

    18 avril 2011 à 16:35:07

    Bonjour les zhéros! :D

    J'espère poster sur le bon forum... n'hésitez pas à me reprendre sinon.

    La raison du post : Je travaille actuellement sur un site web où j'ai développé une fonction de recherche interne (CAD quand je tape le mot "coucou", la recherche m'affiche toutes les annonces avec "coucou" et une ancre me permet de me rendre directement sur l'annonce).

    J'aimerais rajouter à ça la possibilité de colorer le mot en question directement sur la recherche (un peu comme quand on fait CTRL+F et que le mot que l'on cherche prend une couleur).

    Seulement je n'ai pas d'idée. Comment faire?
    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2011 à 16:38:32

      A mon avis c'est compliqué. Heureusement jQuery facilite la vie et sous forme de plugin on peut retrouver cette fonctionnalité (exemple).
      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2011 à 16:41:19

        Tu peux également le faire en php via des regex. ;)

        (Tu ajoute une balise span lors de l'affichage des résultats sur les articles)

        Exemple :
        <?php
        
        $text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor";
        $text = preg_replace("/\b(regex)\b/i", '<span style="background:#5fc9f6">\1</span>', $text);
        echo $text;
        
        • Partager sur Facebook
        • Partager sur Twitter
        Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
          18 avril 2011 à 16:46:42

          Citation : Maraumax

          Tu peux également le faire en php via des regex. ;)


          Oui mais l'inconvénient est que c'est plus long à l'exécution et surtout : rechargement de page ! Sauf si tu le fais en Ajax, mais dans ce cas-là autant le faire en JS. :)
          • Partager sur Facebook
          • Partager sur Twitter
            18 avril 2011 à 16:51:29

            Citation : Desolation

            Citation : Maraumax

            Tu peux également le faire en php via des regex. ;)


            Oui mais l'inconvénient est que c'est plus long à l'exécution et surtout : rechargement de page ! Sauf si tu le fais en Ajax, mais dans ce cas-là autant le faire en JS. :)



            Si il effectue sa recherche en php si peux inclure directement la coloration dans le code ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
              18 avril 2011 à 16:54:10

              Merci pour votre aide, j'apprécie.
              Seulement, je n'arrive pas à bien saisir comment fonctionne le code que tu m'as donné Désolation :(

              Ce n'est vraiment pas clair pour moi qui n'ai jamais fais de javascript...

              Peux-tu me détailler un peu ?
              Si quelqu'un à d'autres solutions aussi?...
              :)
              • Partager sur Facebook
              • Partager sur Twitter
                18 avril 2011 à 17:08:56

                En js pur, en reprenant le code de Maraumax

                var searchString="ma recherche";
                document.body.innerHTML=document.body.innerHTML.replace(new RegExp("("+searchString.replace(/([[\]()^$.?*|])/,"\\$1")+")","ig"),'<span style="background:#5fc9f6">$1</span>');
                

                Bon après on peut l'améliorer en fonction de ce qu'on souhaite faire mais ça reste un POC
                • Partager sur Facebook
                • Partager sur Twitter
                  18 avril 2011 à 17:11:14

                  Un exemple, je cherche le mot "lorem" dans #paragraphe :
                  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" /></script>
                  <script type="text/javascript" src="http://johannburkard.de/resources/Johann/jquery.highlight-3.js" /></script>
                  <script type="text/javascript">
                  $(document).ready(function() {
                  	$('#paragraphe').highlight('lorem');
                  });
                  </script>
                  <style>
                  .highlight { background-color: yellow }
                  </style>
                  <p id="paragraphe">
                  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
                  </p>
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 avril 2011 à 17:20:02

                    Ca fonctionne bien Désolation.
                    Mon seul problème -> Je récupère le mot que je veux colorer via un formulaire.
                    Le mot est donc dans mon $_POST.... Je peux gérer ça avec le javascript?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 avril 2011 à 17:29:26

                      essai au lieu de mettre lorem de mettre
                      <?php $lavaleurdeton$_POST ?>
                      


                      tu dois définir la valeur de ton $_POST avant
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 avril 2011 à 10:06:32

                        Ca ne fonctionne pas :(

                        Quelqu'un d'autre?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 avril 2011 à 10:09:41

                          Citation : a49p

                          Ca ne fonctionne pas :(

                          Quelqu'un d'autre?



                          Mon exemple fonctionne très bien. Donne plus de détails que "Ca ne fonctionne pas"...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
                            19 avril 2011 à 10:13:02

                            J'ai testé la solution javascript de Desolation qui fonctionne seulement, il est impossible d'inclure des variables php dans le javascript donc mon problème est "comment récupérer la valeur de mon $_POST si javascript ne peut lire ma variable " ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 avril 2011 à 10:19:09

                              Citation : Desolation


                              $('#paragraphe').highlight('<?php echo htmlspecialchars($_POST['tavariable']); ?>');
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
                                19 avril 2011 à 10:32:42

                                Merci Maraumax, ça fonctionne comme ça.
                                Seulement ça fonctionne seulement dans le haut de mon code, mais dès que je passe la première balise php, même si je reviens en HTML après et que je tente la coloration, ça ne fonctionne pas.
                                Quelqu'un en sait plus que moi?...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 avril 2011 à 10:42:46

                                  Merci de regarder si le navigateur indique des erreurs avant de poster.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 avril 2011 à 11:31:35

                                    Où puis-je voir ça ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 avril 2011 à 11:59:12

                                      Ok, l'erreur est
                                      "Uncaught SyntaxError: Unexpected token ILLEGAL"

                                      La ligne de code correspondante :

                                      $('#paragraphe').highlight('<?php echo htmlspecialchars($_POST['recherche']); ?>');
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 avril 2011 à 12:19:02

                                        Ta page est bien en php hein ? Si tu regarde la source après la recherche quel est son contenu ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Recherche des annonceurs incentive pour diffuser sur http://www.envoyer-sms-gratuit.net - Contactez-moi !
                                          19 avril 2011 à 12:38:00

                                          Ma page est bien en php et après la recherche, mon $_POST à bien la bonne valeure :(
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            20 avril 2011 à 11:05:17

                                            Citation : a49p

                                            Bonjour les zhéros! :D



                                            Zéro s'écrit sans h !

                                            Sinon tu peux colorer les mot en C.S.S. mais ça à l'air difficile !

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Colorer un mot dynamiquement

                                            × 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