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

Langage PHP Discussion :

PB avec ereg [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut PB avec ereg
    bonjour,

    jai la focntion suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //FONCTION NETTOYAGE CHAMPS DOUANE
    function clean_douane($n){
    	$n = preg_replace('#\s(\w)(?!\w)#', '$1', $n); 
    	//$n = ereg_replace("( )|(/)|(.)|(')|(:)|(,)|(;)","",$n);
    	return $n;
    }
    puis jai le code suivant pour insertion dans une table

    [...]
    $REQUETE_DUR.= "'".clean_douane($RECUP_DOUANE)."',";
    [...]

    Le probleme est qu'il me remplace tous les caracteres par "" (rien) !
    Jai fait un test avec la chaine '858.858 456'. La variable est bien recupere mais dans la requete jai ''.

    ?!?

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    le but est de remplacer quoi par quoi dans ta chaine exemple ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    En fait je voudrais supprimer les espaces eventuels ainsi que d'autres caracteres comme '.' ou '/'

  4. #4
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    str_replace()

    @ tchaOo°

  5. #5
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    Magnifique ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function clean_douane($n){
    	$str = array(" ", "/", ".", "'", ":", ",", ";");
    	$n = str_replace($str, "", $n);
    	return $n;
    }

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Les fonctions de remplacement par caractère sont peu adaptées ici car il faudrait les appeler plusieurs fois à la suite ou bien utiliser des paramètres à rallonge.
    Par ailleurs, il est inutile ici de créer une fonction.

    La solution est :
    $REQUETE_DUR .= "'".preg_replace('#[ ./:,?]#', '', $RECUP_DOUANE)."',";


    Pour rappel : http://g-rossolini.developpez.com/tu...ns-regulieres/


    [Edit] Oh, je t'en prie, ne donne pas "$str" comme nom à un tableau...

  8. #8
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Yogui
    Salut

    Les fonctions de remplacement par caractère sont peu adaptées ici car il faudrait les appeler plusieurs fois à la suite ou bien utiliser des paramètres à rallonge.
    Par ailleurs, il est inutile ici de créer une fonction.

    La solution est :
    $REQUETE_DUR .= "'".preg_replace('#[ ./:,?]#', '', $RECUP_DOUANE)."',";


    Pour rappel : http://g-rossolini.developpez.com/tu...ns-regulieres/


    [Edit] Oh, je t'en prie, ne donne pas "$str" comme nom à un tableau...
    Perso je ne suis pas d'accord... pour moi l'utilisation d'une expression régulière (alors qu'il n'y a aucune règle dans la regexp) pour faire ce boulot là est lourd et inutile... str_replace & C° le font très bien (elle sont faite pour)... .. .

    Après concernant l'utilisation d'une fonction c'est vrai que c'est pas trop utile sauf si tu t'en sers toutes les deux secondes... .. .

    @ tchaOo°

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Au temps pour moi, j'avais oublié que str_replace() peut avoir un seul paramètre de type array.
    Mais bon, une regex aussi simple n'est pas très lourde. Je suis un fainéant de base, je déteste avoir à écrire plusieurs apostrophes et virgules (str_replace) alors que je peux tout mettre entre crochets (preg_replace).

    À mon sens, c'est un choix fondé sur la lisibilité du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $REQUETE_DUR .= "'".str_replace(array(' ', '/', '.', "'", ':', ',', ';'), '', $RECUP_DOUANE)."',";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $REQUETE_DUR .= "'".preg_replace("#[ /.':,;]#", '', $RECUP_DOUANE)."',";

  10. #10
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Feignasse... .. .



    @ tchaOo°

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

Discussions similaires

  1. [RegEx] Extraction d'emails avec ereg()
    Par pdtor dans le forum Langage
    Réponses: 3
    Dernier message: 20/01/2007, 10h59
  2. [RegEx] erreur REG_BADRPT avec ereg
    Par bouazza92 dans le forum Langage
    Réponses: 14
    Dernier message: 24/06/2006, 11h47
  3. [RegEx] caractère ' avec ereg
    Par mussara dans le forum Langage
    Réponses: 5
    Dernier message: 05/05/2006, 15h55
  4. [RegEx] Tester une chaîne avec ereg()
    Par Anduriel dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2006, 11h36
  5. Réponses: 8
    Dernier message: 24/11/2005, 03h53

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