Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2006, 11h58   #1
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 182
Points : 31
Points : 31
Par défaut PB avec ereg

bonjour,

jai la focntion suivante :
Code :
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 ''.

?!?
dafalri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 12h46   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
le but est de remplacer quoi par quoi dans ta chaine exemple ?
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 13h55   #3
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 182
Points : 31
Points : 31
En fait je voudrais supprimer les espaces eventuels ainsi que d'autres caracteres comme '.' ou '/'
dafalri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 14h57   #4
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
str_replace()

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 15h04   #5
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
ou strtr
http://fr.php.net/manual/en/function.strtr.php
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 15h11   #6
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 182
Points : 31
Points : 31
Magnifique ca marche
Code :
1
2
3
4
5
function clean_douane($n){
	$str = array(" ", "/", ".", "'", ":", ",", ";");
	$n = str_replace($str, "", $n);
	return $n;
}
dafalri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 15h14   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 15h23   #8
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
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°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h22   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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 :
$REQUETE_DUR .= "'".str_replace(array(' ', '/', '.', "'", ':', ',', ';'), '', $RECUP_DOUANE)."',";
Code :
 $REQUETE_DUR .= "'".preg_replace("#[ /.':,;]#", '', $RECUP_DOUANE)."',";
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h50   #10
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Feignasse... .. .



@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h41.


 
 
 
 
Partenaires

Hébergement Web