Partage
  • Partager sur Facebook
  • Partager sur Twitter

En php, enpécher un "é" dans un champ grace au regex

    3 décembre 2005 à 22:55:20

    Bonjour,

    Voila je voudrais ne pas autoriser les éêàèùêëç à la validation d'un champ:
    Le champ = site du zéro
    Validation => le champ contient un é alors dire : 'pas le droit'

    Voila grace à une regex mais je ne sais pas la faire.. :euh:

    Merci ^^
    • Partager sur Facebook
    • Partager sur Twitter
      3 décembre 2005 à 22:58:32


      if(preg_match('#[^a-z]#', $variable))
      {
        echo 'Pas bon!';
      }
      else
      {
        echo 'Ok.';
      }
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2005 à 0:07:55

        Aussi, pour un cas simple, str_replace peut servir pour ça :)
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2005 à 9:29:12

          Merci de vos réponses,

          Pour le code de 999888 :

          if(preg_match('#[^a-z]#', $variable))
          {
            echo 'Pas bon!';
          }
          else
          {
            echo 'Ok.';
          }

          Le problème est que le caratcére 'espace' n'est pas accepté :o , et je voudrais juste refuser : ùéàèêË

          Voila et pour le systéme de replace, je suis obligé de mettre 10 lignes de replace, et sa ne fonctionne pas de plus. :euh:

          Merci à tous, bon noel :p
          • Partager sur Facebook
          • Partager sur Twitter
            4 décembre 2005 à 9:32:06

            Si j'ai bien compris, tu dois vérifier dans toute la chaine non ?
            Alors essaie comme ça
            <?php
            if(preg_match('!^[ a-zA-Z0-9]+$!is', $variable))
            {
              echo 'bon!';
            }
            else
            {
              echo 'pas bon.';
            }
            ?>

            • Partager sur Facebook
            • Partager sur Twitter
              4 décembre 2005 à 9:40:27

              Humm ^^
              Non sa ne fonctionne pas :euh:
              En faite voila, j'ai une variable (qui vient d'un champ) on va l'apeller : site du zéro
              Le code que je cherche :D, aura la fonction de voir si le contenu du champ contient un ùéàèêË, pour le cas de site du zéro, il dira 'pas le droit' car le champ contient un 'é'.

              Voila compris :)
              Merci, ciao
              • Partager sur Facebook
              • Partager sur Twitter
                4 décembre 2005 à 9:42:58

                Citation : eagle

                Bonjour,

                Voila je voudrais ne pas autoriser les éêàèùêëç à la validation d'un champ:
                Le champ = site du zéro
                Validation => le champ contient un é alors dire : 'pas le droit'

                Voila grace à une regex mais je ne sais pas la faire.. :euh:

                Merci ^^



                Et si tu disais plutôt à quoi va servir ce champ ce serait plus simple de te donner la solu la plus optimisée, non ? ;)

                Parce que là, je vois tout et n'importe quoi comme regex ! :-°

                EDIT :

                Citation : eagle

                Voila compris


                oui moi tout compris au niveau des accents, mais moi pas compris ce que tu voulais autoriser d'autre ?
                Espace, ponctuation, quotes, bref quels caractères sont acceptés.
                Ou alors on refuse juste les accents et rien d'autre ?
                • Partager sur Facebook
                • Partager sur Twitter
                  4 décembre 2005 à 9:49:05

                  Ouais je crois que c'est ça qu'il veut mais dans ce cas le maître en Regex devrait avoir une solution (c'est pas ironique !)

                  Alors comment fais-tu pour autoriser TOUS les caractères sauf les accents ? (ça m'intéresse aussi franchement).

                  EDIT: Ouais je viens de me rendre que mon REGEX était ... pourri ^^

                  EDIT2: C'est une possibilité ?
                  <?php
                  if(preg_match('![öüäïëéáúíóèàùòì]!i', $variable)){echo 'pas bon';}else{echo 'bon';}
                  ?>

                  Selon moi ça marche, mais peut-être que le REGEX est vraiment pas correct :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 décembre 2005 à 9:55:30

                    Ou alors on refuse juste les accents et rien d'autre ?

                    Voila c'est sa, que les caractéres comprenant des accents sont interdit.

                    Merci ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      4 décembre 2005 à 9:57:54

                      Faites un replace des caractères avec accents par des caractères sans accents, sa genera moins l'utilisateur.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 décembre 2005 à 10:09:00

                        Oui mais sa ne fonctionne pas, j'ai essayé mais du cou le champ dans ma bdd était vide...


                        $nom_site7 = addslashes(htmlentities($_POST['site']));
                        $nom_site6 = str_replace('e', 'é', $nom_site7);
                        $nom_site5 = str_replace('u', 'ù', $nom_site6);
                        $nom_site4 = str_replace('e', 'è', $nom_site5);
                        $nom_site3 = str_replace('e', 'ê', $nom_site4);
                        $nom_site2 = str_replace('e', 'ë', $nom_site3);
                        $nom_de_site= str_replace('a', 'à', $nom_site2);

                         mysql_query("INSERT INTO mb VALUES('', '$nom_de_site')");
                         mysql_close();



                        Avec ce code rien n'était écrit dans le champ de ma bdd :euh:
                        Merci, pour une des deux solutions..
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 décembre 2005 à 10:14:01

                          faire le str_replace() avant insert.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            4 décembre 2005 à 10:18:20

                            $nom_site = $_POST['site'];
                            $pattern=array('à','â','ä','ã','ç','é','è','ê','ë','ì','î','ï','ñ','ò','ô','ö','õ','ù','û','ü','ÿ');
                            $replace=array('a','a','a','a','c','e','e','e','e','i','i','i','n','o','o','o','o','u','u','u','y');
                            $nom_site = str_replace($replace, $pattern, $nom_site);
                            $nom_site = addslashes(htmlentities($nom_site));

                            mysql_query("INSERT INTO mb VALUES('', '$nom_de_site')");
                            mysql_close();
                            Et pareil pour les Majuscules.

                            PS: J'ai pété le SDZ!!! :-°
                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 décembre 2005 à 10:26:25

                              On y arrive ^^
                              J'ai juste changer la position de $replace et $pattern, dans ce code :
                              str_replace($replace, $pattern, $nom_site);
                              sinon sa me faisait le contraire sa me mettait des accents sur toutes le lettres :)

                              Merci ;)
                              Bonne journée, bon noel :p
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 décembre 2005 à 10:28:47

                                Quand je vois le code posté par Makkhdyn je suis vachement perplexe et me demande la raison qui pousse quelqu'un à faire un remplacement généralisé des accentués dans ses textes.

                                La vraie raison c'est quoi ? (même si j'ai quelques doutes )
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 décembre 2005 à 10:34:59

                                  Le champ qui est rempli est le nom du site de ga qui s'inscrit, (le site est un annuaire).
                                  Il y'a donc un systéme de vote pour les sites de l'annuaire et les accents posent problème au niveau des variables de liens, voila tout :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 décembre 2005 à 10:59:29

                                    Citation : eagle

                                    Le champ qui est rempli est le nom du site de ga qui s'inscrit, (le site est un annuaire).
                                    Il y'a donc un systéme de vote pour les sites de l'annuaire et les accents posent problème au niveau des variables de liens, voila tout :)


                                    Oui mais après tu as des centaines d'autres caractères, moins communs certes, mais qui peuvent faire exactement la même chose q'un é ou un à...
                                    Essaye avec l'urlencode peut-être...
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    En php, enpécher un "é" dans un champ grace au regex

                                    × 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