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 30/09/2007, 15h39   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 6
Points : 6
Par défaut utilisation de [:alpha:]

Bonjour à tous

je voulais savoir
[:alpha:]
[:alnum:]

...

s'utilise avec quelles fonctions
mosto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 15h42   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Les fonctions POSIX (ereg*), dépréciées, comme celles de l'extension PCRE (preg_*). A noter que pour ces dernières, elles doivent apparaître dans une classe (ie [[:alpha:]] par exemple).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 16h01   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 6
Points : 6
pour ereg apparement il faut utiliser [[:alpha:]]

Quand j'utilise [:alpha:] ça ne passe pas avec les lettres accentuées. Comment je dois les inclure simplement.

ereg('[[:alpha:]]',$val);

Si $val='ééé' par exemple ça me renvoie false.

merci
mosto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 16h11   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
  • Les fonctions ereg*, comme je l'ai dit, sont dépréciées : il est vivement conseillé d'utiliser l'extension PCRE ;
  • Les fonctions ereg*, contrairement à celles de l'extension PCRE, ne tiennent pas compte des locales donc [:alpha:] est le strict équivalent à [a-zA-Z] excluant tous nos caractères accentués. Les fonctions preg_* devraient en revanche, inclure les caractères accentués, si vos locales sont configurés en ce sens.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 17h19   #5
Invité régulier
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 6
Points : 6
j'ai tout compris merci, mais j'ai toujours un probleme

preg_match('[[:alpha:]]',$val);

me renvoie un warning :
Warning: preg_match() [function.preg-match]: Compilation failed: POSIX named classes are supported only within a class at offset 0 in test_script.php on line 52


merci de votre patience
mosto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 17h34   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il vous manque les délimiteurs de début/fin de motif (puisqu'il vous prend vos premier/dernier crochets pour remplir cette fonction) :
Code :
preg_match('~[[:alpha:]]~',$val);
Ces délimiteurs sont indispensables puisque l'on peut placer des options à la fin du motif. A peu près n'importe quel caractère peut faire office de délimiteur. Il est cependant judicieux d'écarter tout métacaractère et tout caractère figurant dans ce motif (car il devra alors être échappé).

Pour approfondir le sujet : Initiation aux expressions régulières en PHP.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 15h43   #7
Invité régulier
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 6
Points : 6
C'est bien compliqué quand même ces expressions régulières. Je fais des essais pour comprendre mais c'est un peu dur.

[[:alpha:]] chaine qui contient au moins une lettre
^[[:alpha:]] chaine qui commence par une lettre
[[:alpha:]]$ chaine qui fini par une lettre

mais quand je fais ^[[:alpha::]]$ pour aaa222aaaa ça ne marche pas. J'ai beau lire tous les cours que je trouve sur le net, c'est plutot indigeste.

merci
mosto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 16h18   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par mosto
mais quand je fais ^[[:alpha:]]$ pour aaa222aaaa ça ne marche pas. J'ai beau lire tous les cours que je trouve sur le net, c'est plutot indigeste.
Signifie une chaîne d'une seule "lettre".

Pour une chaîne composée uniquement de lettres à raison d'au moins une, ce serait :
^[[:alpha:]]+$
Les possibilités son multiples
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 16h41   #9
Invité régulier
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 6
Points : 6

Oui mais justement si je veux tester une chaine du type

aaaa1111aaaaa

il faut faire comment
mosto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 16h56   #10
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par mosto
Oui mais justement si je veux tester une chaine du type

aaaa1111aaaaa
Et plus précisément ?
^[[:alpha:]]+[[:digit:]]+[[:alpha:]]+$
Au moins une lettre puis au moins un chiffre et enfin au moins une lettre ?

(on peut raccourcir en écrivant \d au lieu de [[:digit:]])
julp 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 21h14.


 
 
 
 
Partenaires

Hébergement Web