Pour simplifier l’écriture des expressions régulières, vous pouvez utiliser des classes abrégées. Faites une pause dans la vidéo et examinez le tableau suivant. Une fois ce tableau examiné, vous pourrez reprendre pour passer à la pratique avec un premier exercice.
Classe abrégée | Correspondance |
\d | [0-9] |
\D | [^0-9] |
\w | [a-zA-Z0-9_] |
\W | [^a-zA-Z0-9_] |
\t | Tabulation |
\n | Saut de ligne |
\r | Retour chariot |
\s | Espace blanc (correspond à \t\n\r) |
\S | Un caractère différent d’un espace |
Pour savoir si vous avez compris, vous allez faire plusieurs exercices :
Exercice 1
Définissez une fonction qui teste si une date est bien formée, c’est-à-dire qu’elle respecte le format suivant :
JJ/MM/AAAA
Si la chaîne est bien formée, la fonction doit retourner le texte suivant, affiché en vert :
La chaîne … est une date valide
Où … représente la chaîne testée.
Dans le cas contraire, la fonction doit retourner le texte suivant, affiché en rouge :
La chaîne … n'est pas une date valide
Où … représente la chaîne testée.
Passez consécutivement les trois chaînes suivantes à la fonction :
$ch1 = "125/12/45"; // Mal formée
$ch2 = "14/09/2016"; // Bien formée
$ch3 = "18:06:13"; // Mal formée
Vous devriez obtenir le résultat suivant :
Solution
Faites une pause dans la vidéo et rédigez le code de l’exercice. Vous pourrez poursuivre la vidéo pour découvrir la solution et la comparer avec votre propre code.
Les dates à tester sont mémorisées dans les variables $ch1, $ch2 et $ch3.
Dans un deuxième temps, ces variables sont passées à la fonction testDate.
Examinons le code de la fonction testDate.
L’expression régulière est passée à la fonction preg_match. Comme toujours, elle est encadrée par le caractère #, au début et à la fin de la chaîne.
La date sera considérée comme valide si elle contient :
\d{1,2} Un ou deux chiffres compris entre 0 et 9
Un caractère /
\d{1,2} Un ou deux chiffres compris entre 0 et 9
Un caractère /
\d{4] Quatre chiffres compris entre 0 et 9
<?php
function testDate($d){
if (preg_match("#\d{1,2}/\d{1,2}/\d{4}#",$d))
return "<font color=\"green\">La chaîne $d est une date valide</font><br>";
else
return "<font color=\"red\">La chaîne $d n'est pas une date valide</font><br>";
}
$ch1 = "125/12/45"; // Mal formée
$ch2 = "14/09/2016"; // Bien formée
$ch3 = "18:06:13"; // Mal formée
echo testDate($ch1);
echo testDate($ch2);
echo testDate($ch3);
?>