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 07/06/2011, 09h43   #1
Membre habitué
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 323
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 323
Points : 144
Points : 144
Par défaut Contrôle de doublons - sensible à la casse

Bonjour,
voici à quoi je suis confronté à l'heure actuelle :
je récupere plusieurs libellés dans un formulaire, le but est de vérifier qu'il n'y ai pas de doublons.

Par exemple :
"Mon Test" et "MOn TeSt" doit me retrouver une erreur de doublon.

A priori il faudrait que je fasse une boucle sur chaque caractère afin de constuire dynamiquement ma regex, le soucis c'est plutot la forme de celle-ci.
Je pensais à quelque chose comme ça :
Code :
 [Mm][Oo][Nn][ ][...pour chaque lettre]
Mais je pense qu'il manque quelque chose.


Pourriez-vous m'éclairer ? :=)
__________________
L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...
erox44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 12h38   #2
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 76
Points : 161
Points : 161
Bonjour,

vous avez peut-être deux solutions (mais certainement pas ce que vous proposez avec des expressions régulières) :
- comparez tous les libellés entre eux avec une fonction comme strcasecmp. Cela implique que vous mettiez tous vos libellés dans un tableau et que vous utilisiez deux boucle imbriquées. Cette solution me parait néanmoins peu élégante.
- Vous envoyez tous vos libellés dans un tableau A. Ensuite vous utilisez la fonction array_unique sur votre tableau A, qui vous renvoit alors un tableau B. Une comparaison du nombre d'éléments dans les tableaux A et B vous dira s'il existe des doublons. Si les nombre sont égaux, pas de doublons... Dans le cas contraire, il existe des doublons.

Il y a surement d'autres solutions, mais ces deux sont celles qui me viennent spontanément à l'esprit (avec une préférence pour la seconde).

HTH.
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/06/2011, 12h55   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
A priori il faudrait que je fasse une boucle sur chaque caractère afin de constuire dynamiquement ma regex
Par la peine de t'enuyer avec des regexp.

Pour déterminer s'il y a des doublons tu peux faire:
Code :
1
2
3
4
$a = array('test', 'Test', 'TEST');
 
if (count($a) != count(array_unique(array_map('strtolower', $a))))
  echo "Il y a des doublons";
-- EDIT

@Agnello J'avais pas vu ta solution, on dirait qu'on a les mêmes idées

Y'a personne qui à une idée moins brico-marché ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/06/2011, 13h30   #4
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 76
Points : 161
Points : 161
Citation:
Envoyé par Benjamin Delespierre Voir le message
@Agnello J'avais pas vu ta solution, on dirait qu'on a les mêmes idées

Y'a personne qui à une idée moins brico-marché ?
Ah, et bien oui, il y a une solution moins brico-marché et plus orientée SI compliant, qui serait de tout insérer en base de données et de faire ça à coup de select, de group by et de having, mais ça ressemble furieusement au couple marteau/enclume pour une pôvre drosophile.

Cdt.
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 14h46   #5
Membre habitué
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 323
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 323
Points : 144
Points : 144
Hello, merci pour vos idées, jvais regarder ça de plus près.
__________________
L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...
erox44 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 20h25.


 
 
 
 
Partenaires

Hébergement Web