Partage
  • Partager sur Facebook
  • Partager sur Twitter

Censure automatique

Problème avec les accents

Anonyme
    24 novembre 2005 à 22:02:09

    Bon voilà j'ai un site où j'ai créé une censure automatique, mais le problème c'est qu'il veut pas me prendre les accents et je sais pas trop comment faire (je me doute que ça vient du fait qu'il sont stocké avec un caractère spécial dans dans la base SQL mais je sais pas comment faire)

    Voilà mon bout de script et merci d'avance :
    function parse($texte)
    {
            $texte  = stripslashes($texte);
            $texte  = htmlentities($texte);
            $texte  = nl2br($texte);
            $sql = mysql_query('SELECT * FROM emj_censure');
            while($censure=mysql_fetch_array($sql))
            {
                    $mot = $censure['mot'];
                    $texte = preg_replace("!$mot!isU",'[mot censuré]',$texte);
            }
    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2005 à 22:22:23

      Pourquoi ne pas utiliser de préférence la fonction str_ireplace du PHP, qui est tout aussi (voire plus) simple, et pas mal plus rapide ?

      Pour les accents, je te conseille de mettre un html_entities($texte, ENT_QUOTES); à tout variable avant de l'insérer dans ta BDD.
      • Partager sur Facebook
      • Partager sur Twitter
        24 novembre 2005 à 22:35:19

        Citation : Little-Boy


        function parse($texte)
        {
                $texte  = stripslashes($texte);
                $texte  = htmlentities($texte);
                $texte  = nl2br($texte);
                $sql = mysql_query('SELECT * FROM emj_censure');
                while($censure=mysql_fetch_array($sql))
                {
                        $mot = stripslashes($censure['mot']);
                        $texte = preg_replace("!$mot!isU",'[mot censuré]',$texte);
                }
        }//faut toujours fermer svp

        Bien sûr tu met des slash dans la bdd
        Je sais pas si sa marche mais sa a l'air bien!
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 novembre 2005 à 22:40:42

          Ca marche pas


          Je m'en doutais un peu, ça aurait été un problème d'apostrophe le slash ok, mais pour un accent, c'est pas une histoire de &eacute ou un truc du genre

          (au passage désolé pour pas avoir fermé la fonction, j'ai oublié de prendre la ligne en faisant copier/coller)
          • Partager sur Facebook
          • Partager sur Twitter
            24 novembre 2005 à 23:37:17

            Citation : bluestorm

            Pourquoi ne pas utiliser de préférence la fonction str_ireplace du PHP, qui est tout aussi (voire plus) simple, et pas mal plus rapide ?

            Pour les accents, je te conseille de mettre un html_entities($texte, ENT_QUOTES); à tout variable avant de l'insérer dans ta BDD.



            - str_replace() (ou str_ireplace) ne fera rien de valable dans ce cas.
            - htmlentities() avant insert est une hérésie comme on en voit tant sur ce site.
            Conclusion : tout faux sur les deux avis.

            Pour Little-boy :
            - pas de htmlentities avant de mettre dans la base de données.
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2005 à 0:04:46

              En meme temps, quand je regarde dans la doc les infos sur sa regexp ("`$mot`iSU") je vois que c'est un "case-insensitive", et deux options baroques d'optimisation de la recherche.

              De loin, je ne vois pas ce que ca apporte de plus qu'un str_ireplace, mais si tu étais disposé à l'expliquer ca me ferait grandement plaisir.
              • Partager sur Facebook
              • Partager sur Twitter
                25 novembre 2005 à 0:15:51

                Que va t'il se passer avec un str_replace sur cette phrase ?

                <?php
                $chaine='Le constat s\'impose de lui-même, ce concerto pour violon est une pure merveille';
                $mot_a_bannir='con';
                echo str_replace($mot_a_bannir,'****',$chaine);
                ?>
                • Partager sur Facebook
                • Partager sur Twitter
                  25 novembre 2005 à 0:25:10

                  Hum.

                  $mot_a_bannir=' con ';

                  ?
                  (hum, si tu parles de la super gestion des espaces de la mort qui tue des regexp avec des [ \t\n], c'est un motif mais bon, hum, ca en vaut vraiment la peine ?)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 novembre 2005 à 1:40:33

                    Bluestorm ce que veux dire Bison c'est qu'avec un str_replace tu va te retrouver a remplacer des qu'un mot va contenir (dans notre cas 'con') resultat nous aurons ****certo.
                    Ce qui n'est pas du tt le but recherche ici :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 novembre 2005 à 4:10:32

                      +1 pour Bison


                      Par contre, peux tu m'expliqué pourquoi il ne faut pas mettre de htmlentities dans une BdD??
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 novembre 2005 à 8:35:52

                        Citation : bluestorm

                        Hum.

                        $mot_a_bannir=' con ';

                        ?
                        (hum, si tu parles de la super gestion des espaces de la mort qui tue des regexp avec des [ \t\n], c'est un motif mais bon, hum, ca en vaut vraiment la peine ?)



                        - la super gestion des espaces de la mort qui tue des regexp avec des [ \t\n]
                        Super ! :-°
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Censure automatique

                        × 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