Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

La fonction preg_match (depuis php3)

La syntaxe :
preg_match (motif de chaîne , chaîne sujet , tableau résultat);
Ce qui est en italique est optionnel

preg_match retourne vrai si la chaîne sujet contient le motif donné.
Si l'option tableau résultat est fournie, preg_match remplit un tableau avec les correspondances.

$tableau_resultat, il contiendra les résultats de la recherche :
$tableau_resultat[0] contiendra la partie qui satisfait le masque complet.
$tableau_resultat[1] contiendra la partie qui sastisfait la première parenthèse capturante
et ainsi de suite...

Exemples avec preg_match

Exemple 1


 Test sur un champ login lettres chiffres uniquement 
Niveau de compréhension : facile

$login="Toto1508";
if(!preg_match('`^[[:alnum:]]{4,8}$`',$login))
{
echo"Le login n'est pas correct";
}
else
{
echo"Le login est correct";
}
?>

Explication :
Le login ne peut contenir que des lettres et des chiffres et doit être de 4 caractères minimum à 8 caractères maximum.
[[:alnum:]] classe déterminant l'usage exclusif des lettres et chiffres.
{4,8} est l'intervalle de reconnaissance imposant 4 caractères minimum et 8 maximum.

Exemple 2

Idem que le précédent + l'underscore en utilisant la classe prédéfinie \w 
Niveau de compréhension : facile

$login="Toto_1508";
if(!preg_match('`^\w{4,8}$`',$login))
{
echo"Le login n'est pas correct";
}
else
{
echo"Le login est correct";
}
?>

Explication :
Le login ne peut contenir que des lettres et des chiffres, ainsi que l'underscore et doit être de 4 caractères minimum à 8 caractères maximum.
\w classe prédéfinie utilisée avec les PCRE et déterminant l'usage exclusif des lettres et chiffres, ainis que de l'underscore.
{4,8} est l'intervalle de reconnaissance imposant 4 caractères minimum et 8 maximum.

Exemple 3

 Test sur une email 
Niveau de compréhension :difficile

//--- exemple avec les classes prédéfinies

preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]
([-_.]?[[:alnum:]])*\.([a-z]{2,4})$`',$chaine);

//--- exemple avec les classes prédéfinies

preg_match('`^\w([-_.]?\w)*@\w([-_.]?\w)*\.([a-z]{2,4})$`',$chaine)

?>

Explication :
L'adresse email doit absolument commencer par une lettre ou un chiffre
[[:alnum:]] puis peut être suivie d'un seul - ou d'un seul _ ou encore d'un seul point, suivi d'une série de lettres ou chiffres
([-_.]?[[:alnum:]])
Vient ensuite le @ suivi uniquement par une ou plusieurs lettres ou chiffres
[[:alnum:]], puis peut être suivie d'un seul - ou d'un seul _ ou encore d'un seul point, suivi d'une série de lettres ou chiffres
([-_.]?[[:alnum:]])*
Vient enfin le point suivi par 2 à 4 lettres pour le domaine
\.([a-z]{2,4}
Vous remarquerez le \ devant le point qui permet de l'échapper afin qu'il ne soit plus considéré comme un métacaractères mais bien comme le signe . (point)
ADAM Benjamin 2008 | Admin