IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Interdire un caractère avec !ereg ?


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 149
    Points : 48
    Points
    48
    Par défaut Interdire un caractère avec !ereg ?
    Bonjour,

    Je souhaite interdire les caractère suivant dans un champ texte ' + # \
    En effet ils posent problème lorsque j'utilise cette variable dans un header.

    Pour cela j'ai utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!ereg("\'" ,$ptitre) && !ereg("\+" ,$ptitre) && !ereg("\#" ,$ptitre) && !ereg("\&" ,$ptitre))
    	{
    CODE DAJOUT DANS LA TABLE
            }
    Mon problème est le suivant avec le caractère ' :

    Si je rentre dans le champ " jriegjeo ' fijieo" par exemple, le code me retourne une erreur comme je l'avai prévu.

    Mais si je rentre "Interview d’un alien" le code ne me retourne aucune erreur.

    Ereg est-il bien utilisé?

    Merci

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Salut ! Déjà je propose une simplification de la regex, à savoir que le | signifie OU, donc s'il trouve au moins l'un d'entre eux il ne rentre pas dans le if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!ereg("\'|\+|\#|\&|\’" ,$ptitre))
    	{
    CODE DAJOUT DANS LA TABLE
            }
    Tout simplement non?^^

    Sinon je te conseil les fonctions PERL comme preg_match, c'est plus puissant que les fonctions POSIX (comme ereg) :

    http://fr3.php.net/manual/fr/function.preg-match.php
    ►Ne pas oublier le

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    J'aurais dis plutôt strtr() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $chaine = "J'aime # les sauci\sses  + le poulet"; 
    $array_bad_char = array("'" => "", "#" => "", "+" => "", "\\" => "");
     
    echo strtr($chaine, $array_bad_char);
    ?>
    Si d'autres caractères te posent problème par la suite, il suffira de les rajouter dans le tableau, comme ça tu executes quand même ta requête mais tu remplaces les caratères interdits par rien.

    et si tu préfères que les caractères interdits soient remplacés : "+" => "-"

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 149
    Points : 48
    Points
    48
    Par défaut
    Merci obito et N1bus !

    Mais avec ton code N1bus, j'ai fait plusieurs test impécable mais lorsque je rentre la phrase "Interview d’un alien" et bien le résultat est identique, le changement ne se fait pas.

    Pourquoi cette phrase? O_o

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Car le caractère que tu utilises n'est pas l'apostrophe (touche 4 du clavier) : il faut juste que tu rajoutes ce caractère dans le tableau (en le copiant/collant car je ne l'ai pas trouvé sur mon clavier ...):
    "’" => ""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $chaine = "Interview d’un alien"; 
    $array_bad_char = array("'" => "", "#" => "", "+" => "", "\\" => "", "’" => "");
     
    echo strtr($chaine, $array_bad_char);
    ?>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 149
    Points : 48
    Points
    48
    Par défaut
    Le mystère est résolue!!
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir un entier en caractère avec des 0 devant
    Par Oluha dans le forum Développement
    Réponses: 12
    Dernier message: 28/08/2017, 13h37
  2. [RegEx] caractère ' avec ereg
    Par mussara dans le forum Langage
    Réponses: 5
    Dernier message: 05/05/2006, 15h55
  3. Réponses: 2
    Dernier message: 06/11/2005, 11h11
  4. [SQL]Caractères avec accents
    Par New dans le forum Oracle
    Réponses: 1
    Dernier message: 24/10/2005, 09h49
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo