- Une expression rationnelle permet d'effectuer des recherches complexes dans une chaîne de caractères.
-
- Ex :
- Soit $Chaine une chaîne quelconque.
- On cherche a savoir a quoi correspond cette chaîne.
- Pour cela on va utiliser le code suivant :
- If (ereg("[^0-9]",$Chaine))
- {
- print $Chaine." est un nombre" ;
- }
- else
- {
- print $Chaine. "est tout sauf un nombre" ;
- }
-
- Interprétation :
-
- La fonction ereg(arg1,arg2)
- Cette fonction va examiner la chaîne, le premier argument contient le profil de recherche et le second la chaîne dans la quelle on veut faire la recherche.
- Elle renvoi vrai ou faux
-
- Ereg va alors rechercher dans la chaîne tout ce qui se trouve dans les [ ] de l'arg1 ici : "[^0-9]"
-
- Ici on va rechercher tous les caractères compris entre 0 et 9 (donc tous les chiffres)
- Et la fonction ereg() va renvoyer vrai si la chaîne comprend autre chose que ces caractères (c'est le ^ qui veux dire tout sauf )
-
- Les différents "arg1" de recherche
- Symbole pour vérifier si la chaîne
- . comprend un caractère quelconque
- .* comprend un nombre quelconque de caractère quelconque
- ^a commence par un "a"
- a$ finis par "a"
- a+ et a* comprend au moins un "a"
- a? comprend aucun "a" ou 1 seul
- \n comprend un alinéa
- \t comprend une tabulation
- (ab) comprend la chaîne "ab"
- a|b comprend "a" ou "b"
- a{2} comprend la chaîne "aa"
- a{1,} comprend les chaînes "a" ou "aa" ou "aaa" ou.
- a{1,3} comprend les chaînes "a" ou "aa" ou "aaa"
- [a-z] comprend n'importe quelle lettre minuscule
- [A-Z] comprend n'importe quelle lettre en majuscule
- [0-9] comprend n'importe quel chiffre de 0 a 9
- ^[a-z] donnera vrai que s'il ne trouve rien d'autre que des lettres en minuscules
- [[:alpha:]] comprend n'importe quelle lettre
- [[:digit:]] comprend n'importe quel chiffre
- [[:alnum:]] comprend n'importe quel chiffre ou lettre
- [[:cntrl:]] comprend n'importe quel caractère de contrôle
- [[:print:]] comprend n'importe quel caractère imprimable
- [[:graph:]] comprend n'importe quel caractère imprimable sauf l'espace
- [[:blank:]] comprend l'espace ou la tabulation
- [[:space:]] comprend un espace
- [[:upper:]] comprend n'importe quelle lettre majuscule
- [[:lower:]] comprend n'importe quelle lettre minuscule
- [[:punct:]] comprend n'importe quel signe de ponctuation
- [[:xdigit:]] comprend n'importe quel chiffre hexadécimal
-
- NB :
- On peut additionner ces symboles pour donner des recherches plus complexe
- ainsi :
- "^[a-z0-9_]|\\-|\\.)+@([a-z0-9_]|\\-\\.)+\\.+([a-z0-9])$"
- signifie que l'on ne sort vrai que si la chaîne :
- 1) Commence par une sous chaîne (de lettres en minuscules ou de chiffres ou de . ou de - ou de _)
- 2) Et suivit d'un @ lui-même suivit par une sous chaîne (de lettres en minuscules ou de chiffres ou de . ou de - ou de _)
- 3) Et suivit d'un . lui-même suivit par une sous chaîne (de lettre en minuscule ou de chiffres )
- en bref cette adition de symbole permet de contrôler que la chaîne est une adresse email
-
-
- Fonctions utiles
- eregi() idem ereg() mais ne fais pas la différence entre majuscules et minuscules.
-
- ereg_replace(chaîne a rechercher, chaîne de remplacement, chaîne )
-
- eregi_replace() Idem ereg_replace() mais ne fais pas la différence entre majuscules et minuscules.
Une expression rationnelle permet d'effectuer des recherches complexes dans une chaîne de caractères.
Ex :
Soit $Chaine une chaîne quelconque.
On cherche a savoir a quoi correspond cette chaîne.
Pour cela on va utiliser le code suivant :
If (ereg("[^0-9]",$Chaine))
{
print $Chaine." est un nombre" ;
}
else
{
print $Chaine. "est tout sauf un nombre" ;
}
Interprétation :
La fonction ereg(arg1,arg2)
Cette fonction va examiner la chaîne, le premier argument contient le profil de recherche et le second la chaîne dans la quelle on veut faire la recherche.
Elle renvoi vrai ou faux
Ereg va alors rechercher dans la chaîne tout ce qui se trouve dans les [ ] de l'arg1 ici : "[^0-9]"
Ici on va rechercher tous les caractères compris entre 0 et 9 (donc tous les chiffres)
Et la fonction ereg() va renvoyer vrai si la chaîne comprend autre chose que ces caractères (c'est le ^ qui veux dire tout sauf )
Les différents "arg1" de recherche
Symbole pour vérifier si la chaîne
. comprend un caractère quelconque
.* comprend un nombre quelconque de caractère quelconque
^a commence par un "a"
a$ finis par "a"
a+ et a* comprend au moins un "a"
a? comprend aucun "a" ou 1 seul
\n comprend un alinéa
\t comprend une tabulation
(ab) comprend la chaîne "ab"
a|b comprend "a" ou "b"
a{2} comprend la chaîne "aa"
a{1,} comprend les chaînes "a" ou "aa" ou "aaa" ou.
a{1,3} comprend les chaînes "a" ou "aa" ou "aaa"
[a-z] comprend n'importe quelle lettre minuscule
[A-Z] comprend n'importe quelle lettre en majuscule
[0-9] comprend n'importe quel chiffre de 0 a 9
^[a-z] donnera vrai que s'il ne trouve rien d'autre que des lettres en minuscules
[[:alpha:]] comprend n'importe quelle lettre
[[:digit:]] comprend n'importe quel chiffre
[[:alnum:]] comprend n'importe quel chiffre ou lettre
[[:cntrl:]] comprend n'importe quel caractère de contrôle
[[:print:]] comprend n'importe quel caractère imprimable
[[:graph:]] comprend n'importe quel caractère imprimable sauf l'espace
[[:blank:]] comprend l'espace ou la tabulation
[[:space:]] comprend un espace
[[:upper:]] comprend n'importe quelle lettre majuscule
[[:lower:]] comprend n'importe quelle lettre minuscule
[[:punct:]] comprend n'importe quel signe de ponctuation
[[:xdigit:]] comprend n'importe quel chiffre hexadécimal
NB :
On peut additionner ces symboles pour donner des recherches plus complexe
ainsi :
"^[a-z0-9_]|\\-|\\.)+@([a-z0-9_]|\\-\\.)+\\.+([a-z0-9])$"
signifie que l'on ne sort vrai que si la chaîne :
1) Commence par une sous chaîne (de lettres en minuscules ou de chiffres ou de . ou de - ou de _)
2) Et suivit d'un @ lui-même suivit par une sous chaîne (de lettres en minuscules ou de chiffres ou de . ou de - ou de _)
3) Et suivit d'un . lui-même suivit par une sous chaîne (de lettre en minuscule ou de chiffres )
en bref cette adition de symbole permet de contrôler que la chaîne est une adresse email
Fonctions utiles
eregi() idem ereg() mais ne fais pas la différence entre majuscules et minuscules.
ereg_replace(chaîne a rechercher, chaîne de remplacement, chaîne )
eregi_replace() Idem ereg_replace() mais ne fais pas la différence entre majuscules et minuscules.