La fonction preg_match (PHP3 >3.0.9 - PHP 4)

La syntaxe :
preg_match (motif de chaine , chaine 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
<?php
$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
<?php
$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'inderscore 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
<?php
//--- 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érer comme un métacaractères mais bien comme le signe . (point)
Exemple
Niveau de compréhension :
Explication :
Rédaction Yves Maistriaux :: Mai 2003
Dernière mise à jour :: Décembre 2005