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 31/05/2006, 14h10   #1
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Par défaut expression reguliere et eregi

Bonjour

voila je me suis mis aux expression réguliere j'ai reussis a en faire une pour les chaines de mail en prenant a droite a gauche et croyait avoir compris mais c'est apparement pas le cas puisque j'ai voulu en faire une pour une chaine de caractère et ca fonctionne plus :-)

Voila mon probleme je voudrais verifier qu'une chaine soit bien composées de letre min maj de chiffre et de certains caractère

voila mon code qui ne fonctionne pas.
Code :
eregi("[[:alnum:][éà-_\/@]]+",$chaine);
Quand je teste une chaine avec ; ou , ca passe alors que ca devrait pas passer.

Quel est le probleme avec ma ligne svp avec quelques petites explication.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2006, 21h56   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 569
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 569
Points : 2 503
Points : 2 503
Salut, il me semble que ceci devrait marcher
Code :
preg_match('#^[[:alnum:]@\-_\\/]+$#', $chaine);
Petites explications :
  • il est préférable d'utiliser preg_match utilise la syntaxe des expressions rationnelles compatibles PERL (ceci est conseillé dans la doc de PHP.net)
  • les # servent à délimiter le motif de ton expression régulière (tu peux en choisir d'autres)
  • entre les crochets tu as :
    1. [:alnum:] tous les caractères alphanumériques
    2. @ (pas de remarque)
    3. \- il faut échapper le - car c'est un caractère "réservé" pour les regex, d'où le \
    4. _ (pas de remarque)
    5. \\ désigne le \ qu'il faut échapper avec un autre \ (comme pour -)
    6. / (pas de remarque)
Ta regex ne désignait pas qu'il fallait prendre en compte toute la chaîne de caractères, c'est pourquoi tu avais des problèmes avec les ,;...
^ permet de désigner le début de la chaîne et $ la fin

Voilà, j'espère que je ne t'ai pas embrouillé

PS : tu peux jeter un oeil sur ce tuto très bien fait : http://cyberzoide.developpez.com/php4/regex/
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 11h40   #3
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Merci pour les explications en fait mon probleme venait du $ a la fin j'ai reussis a en construire maintenant des correctes.

Pour tes remarques elles sont pas mal surtout pour les echappements ca m'a pas mal aidé. Pour les # j'ai aps tout saisie et pour le preg_match je vais aller voir la doc pour voir ce que ca dit.

merci
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 11h51   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Les # ce sont des délimiteurs tout comme / et ils sont obligatoire dans la définition de l'expression régulière (surtout avec preg_match, preg_match_all et autres, voir doc).

Si tu veux en savoir plus : syntaxe des masques

Sinon je suppose que c'est résolu ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h34.


 
 
 
 
Partenaires

Hébergement Web